From: Cristina Pauna Date: Mon, 24 Feb 2020 13:32:49 +0000 (+0000) Subject: Merge "Add Vuls security test for x86_64" X-Git-Tag: 3.0.0~9 X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=validation.git;a=commitdiff_plain;h=b88c6c799d8885d8ed5e4326b3d366df44453154;hp=37a1ec033aa1711ac75b2f89b038684d5de80dba Merge "Add Vuls security test for x86_64" --- diff --git a/.coafile b/.coafile index fd4a0cc..c472b5d 100644 --- a/.coafile +++ b/.coafile @@ -36,7 +36,8 @@ bears = YAMLLintBear files = **.yaml, **.yml use_spaces = true max_line_length = 120 -ignore = tests/k8s/conformance/custom_repos.yaml +ignore = tests/k8s/conformance/custom_repos.yaml, + tests/k8s/kube-hunter/job.yaml [all.Python] bears = PyLintBear diff --git a/INFO.yaml b/INFO.yaml new file mode 100644 index 0000000..96eb18b --- /dev/null +++ b/INFO.yaml @@ -0,0 +1,78 @@ +--- +project: 'validation' +project_creation_date: '2019-12-16' +project_category: 'feature' +lifecycle_state: 'Incubation' +project_lead: &akraino_validation_ptl + name: 'Tapio Tallgren' + email: 'tapio.tallgren@nokia.com' + id: 'TapioTallgren' + company: 'Nokia' + timezone: 'Europe/Helsinki' +primary_contact: *akraino_validation_ptl +issue_tracking: + type: 'jira' + url: 'https://jira.akraino.org/projects/' + key: 'validation' +mailing_list: + type: 'groups.io' + url: 'featureprojects@lists.akraino.org' + tag: '[#validation]' +realtime_discussion: + type: 'irc' + server: 'freenode.net' + channel: '#akraino' +meetings: + - type: 'gotomeeting+irc' + agenda: 'https://wiki.akraino.org/display/' + url: '' + server: 'freenode.net' + channel: '#akraino' + repeats: '' + time: '' +repositories: + - validation +committers: + - <<: *akraino_validation_ptl + - name: 'Cristina Pauna' + email: 'cristina.pauna@enea.com' + company: 'enea' + id: 'cristinapauna' + timezone: 'Europe/Bucharest' + - name: 'Juha Kosonen' + email: 'juha.kosonen@nokia.com' + company: 'nokia' + id: 'jukosone' + timezone: 'Europe/Helsinki' + - name: 'Andrew Wilkinson' + email: 'arkwilkinson@gmail.com' + company: 'gmail' + id: 'AndrewWilkinson' + timezone: 'America/Los_Angeles' + - name: 'Deepak Kataria' + email: 'dd7022@att.com' + company: 'att' + id: 'dd7022' + timezone: 'America/New_York' + - name: 'Naga Sugguna' + email: 'naga.jagan@gmail.com' + company: '' + id: 'nagasugguna' + timezone: 'Unknown/Unknown' + - name: 'Alexandru Avadanii' + email: 'Alexandru.Avadanii@enea.com' + company: 'enea' + id: 'AlexandruAvadanii' + timezone: 'Europe/Bucharest' + - name: 'Ioakeim Samaras' + email: 'is661a@att.com' + company: 'att' + id: 'IoakeimSamaras' + timezone: 'Europe/Athens' +tsc: + # yamllint disable rule:line-length + approval: 'January 31, 2019 TSC meeting https://docs.google.com/document/d/1gJssBhVL2cu6qtP7ZxgRl5LjrQzW1tproIUEw4bOCfw/edit' + changes: + - type: '' + name: '' + link: '' diff --git a/bluval/Dockerfile b/bluval/Dockerfile index f01deaa..7125c73 100644 --- a/bluval/Dockerfile +++ b/bluval/Dockerfile @@ -15,11 +15,12 @@ ############################################################################## # ref: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds -FROM python:3.6-alpine3.9 +FROM python:3.6-alpine3.10 RUN apk --no-cache add --update \ gcc \ git \ + docker-cli \ libc6-compat \ libc-dev \ libffi \ diff --git a/bluval/blucon.sh b/bluval/blucon.sh index 3cc1e5e..afe54db 100755 --- a/bluval/blucon.sh +++ b/bluval/blucon.sh @@ -52,7 +52,6 @@ set -x docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ - -v /usr/bin/docker:/usr/bin/docker \ -v $AKRAINO_HOME/results:/opt/akraino/results \ -v $AKRAINO_HOME/validation:/opt/akraino/validation \ akraino/validation:blucon-$image_tag "$@" diff --git a/bluval/bluval-base.yaml b/bluval/bluval-base.yaml index ab860f9..845a700 100644 --- a/bluval/bluval-base.yaml +++ b/bluval/bluval-base.yaml @@ -54,6 +54,9 @@ blueprint: - name: ha what: ha + - + name: kube-hunter + what: kube-hunter k8s_networking: &k8s_networking - name: node_connectivity diff --git a/bluval/bluval-iec.yaml b/bluval/bluval-iec.yaml index 1762e5e..1da0158 100644 --- a/bluval/bluval-iec.yaml +++ b/bluval/bluval-iec.yaml @@ -25,3 +25,7 @@ blueprint: name: conformance what: conformance optional: "False" + - + name: kube-hunter + what: kube-hunter + optional: "True" diff --git a/bluval/bluval-kni.yaml b/bluval/bluval-kni.yaml new file mode 100644 index 0000000..c615ffb --- /dev/null +++ b/bluval/bluval-kni.yaml @@ -0,0 +1,43 @@ +--- +############################################################################## +# Copyright (c) 2019 Red Hat. # +# # +# 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. # +############################################################################## +blueprint: + name: kni + layers: + - hardware + - os + - k8s + # Any hardware some basic tests + hardware: + - + name: bios_version + skip: "False" + what: bios_version + os: + - + name: ltp + what: ltp + - + name: cyclictest + what: cyclictest + k8s: + - + name: conformance + what: conformance + - + name: kube-hunter + what: kube-hunter + optional: "True" diff --git a/bluval/bluval-rec.yaml b/bluval/bluval-rec.yaml index 8bc3203..07df9da 100644 --- a/bluval/bluval-rec.yaml +++ b/bluval/bluval-rec.yaml @@ -52,3 +52,7 @@ blueprint: name: etcd_ha what: etcd_ha optional: "True" + - + name: kube-hunter + what: kube-hunter + optional: "True" diff --git a/bluval/bluval-unicycle.yaml b/bluval/bluval-unicycle.yaml index 02e6b31..2f0768d 100644 --- a/bluval/bluval-unicycle.yaml +++ b/bluval/bluval-unicycle.yaml @@ -46,6 +46,10 @@ blueprint: name: etcd_ha what: etcd_ha optional: "True" + - + name: kube-hunter + what: kube-hunter + optional: "True" openstack: &openstack_unicycle - name: tempest diff --git a/docker/k8s/Dockerfile b/docker/k8s/Dockerfile index 43c6d80..3296fdf 100644 --- a/docker/k8s/Dockerfile +++ b/docker/k8s/Dockerfile @@ -15,7 +15,7 @@ ############################################################################## # ref: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds -FROM golang:alpine3.9 as build +FROM golang:alpine3.10 as build # Sonobuoy supports 3 Kubernetes minor versions: the current release and 2 # minor versions before. @@ -53,7 +53,7 @@ RUN if [ $(uname -m) == 'aarch64' ]; then HOST_ARCH=arm64; else HOST_ARCH=amd64; https://storage.googleapis.com/kubernetes-release/release/stable-$K8S_VER.txt) && \ make kubectl ginkgo && \ make WHAT=test/e2e/e2e.test ARCH=$HOST_ARCH -RUN go get -d github.com/heptio/sonobuoy && \ +RUN git clone https://github.com/heptio/sonobuoy /go/src/github.com/heptio/sonobuoy && \ cd /go/src/github.com/heptio/sonobuoy && \ git checkout $SB_TAG && \ go install @@ -65,8 +65,8 @@ WORKDIR /wheels RUN pip3 install wheel RUN pip3 wheel -r /wheels/requirements/pip-requirements.txt -# Copy binaries in the final contaier and install robot framework -FROM python:3.6-alpine3.9 +# Copy binaries in the final container and install robot framework +FROM python:3.7-alpine3.10 COPY --from=build /src/k8s.io/kubernetes/_output/bin /usr/local/bin COPY --from=build /go/bin/sonobuoy /bin/sonobuoy COPY --from=build /wheels /wheels diff --git a/docker/k8s/pip-requirements.txt b/docker/k8s/pip-requirements.txt index 18b264c..59a75a8 100644 --- a/docker/k8s/pip-requirements.txt +++ b/docker/k8s/pip-requirements.txt @@ -3,3 +3,4 @@ robotframework-httplibrary robotframework-jsonlibrary robotframework-requests robotframework-sshlibrary +kube-hunter diff --git a/docker/kube-hunter/Dockerfile b/docker/kube-hunter/Dockerfile new file mode 100644 index 0000000..7e65f93 --- /dev/null +++ b/docker/kube-hunter/Dockerfile @@ -0,0 +1,40 @@ +############################################################################## +# Copyright (c) 2020 AT&T, ENEA AB, Nokia and others # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you maynot 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. # +############################################################################## + +FROM python:3.6-alpine3.9 as build + +# Install dependencies +COPY pip-requirements.txt /wheels/requirements/pip-requirements.txt + +RUN apk --no-cache add --update \ + linux-headers \ + build-base + +# Build binaries +WORKDIR /wheels +RUN pip3 install wheel +RUN pip3 wheel -r /wheels/requirements/pip-requirements.txt + +# Copy binaries in the final container +FROM python:3.6-alpine3.9 +COPY --from=build /wheels /wheels + +RUN pip3 install -r /wheels/requirements/pip-requirements.txt \ + -f /wheels && \ + rm -rf /wheels && \ + rm -rf /root/.cache/pip/* + +ENTRYPOINT ["kube-hunter"] diff --git a/docker/kube-hunter/Makefile b/docker/kube-hunter/Makefile new file mode 100644 index 0000000..4a059ba --- /dev/null +++ b/docker/kube-hunter/Makefile @@ -0,0 +1,26 @@ +############################################################################## +# Copyright (c) 2020 AT&T, ENEA AB, Nokia and others # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you maynot 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. # +############################################################################## + +.PHONY: all +all: push-image .push_manifest + +.PHONY: build +build: .build + +.PHONY: push-image +push-image: .push_image + +include ../build.mk diff --git a/docker/kube-hunter/pip-requirements.txt b/docker/kube-hunter/pip-requirements.txt new file mode 100644 index 0000000..6052d92 --- /dev/null +++ b/docker/kube-hunter/pip-requirements.txt @@ -0,0 +1 @@ +kube-hunter diff --git a/docker/logging/Dockerfile b/docker/services/Dockerfile similarity index 100% rename from docker/logging/Dockerfile rename to docker/services/Dockerfile diff --git a/docker/logging/Makefile b/docker/services/Makefile similarity index 100% rename from docker/logging/Makefile rename to docker/services/Makefile diff --git a/docker/logging/pip-requirements.txt b/docker/services/pip-requirements.txt similarity index 100% rename from docker/logging/pip-requirements.txt rename to docker/services/pip-requirements.txt diff --git a/tests/docker/docker_bench/docker_bench.resource b/tests/docker/docker_bench/docker_bench.resource index 674087f..8a93e3d 100644 --- a/tests/docker/docker_bench/docker_bench.resource +++ b/tests/docker/docker_bench/docker_bench.resource @@ -18,6 +18,7 @@ *** Settings *** Library BuiltIn +Library Collections Library OperatingSystem Library Process Library SSHLibrary @@ -43,12 +44,18 @@ Upload Test Software To Nodes Copy Test Software To All Nodes Run Test Software On Nodes - :FOR ${node} IN @{nodes} - \ Execute Command ssh ${SSH_OPTS} ${node} "cd ${NODEDIR}; sudo ./docker-bench-security.sh -b -l bench.log" - \ Execute Command scp ${SSH_OPTS} ${node}:${NODEDIR}/bench.log ${DESTDIR}/docker-bench-${node}.log - \ Execute Command scp ${SSH_OPTS} ${node}:${NODEDIR}/bench.log.json ${DESTDIR}/docker-bench-${node}.json - \ SSHLibrary.Get File ${DESTDIR}/docker-bench-${node}.log ${REPORTDIR}/ - \ SSHLibrary.Get File ${DESTDIR}/docker-bench-${node}.json ${REPORTDIR}/ + FOR ${node} IN @{nodes} + Start Command ssh ${SSH_OPTS} ${node} "cd ${NODEDIR}; sudo ./docker-bench-security.sh -b -l bench.log" + END + @{tmp}= Copy List ${nodes} + Reverse List ${tmp} + FOR ${node} IN @{tmp} + Read Command Output return_stdout=False + Execute Command scp ${SSH_OPTS} ${node}:${NODEDIR}/bench.log ${DESTDIR}/docker-bench-${node}.log + Execute Command scp ${SSH_OPTS} ${node}:${NODEDIR}/bench.log.json ${DESTDIR}/docker-bench-${node}.json + SSHLibrary.Get File ${DESTDIR}/docker-bench-${node}.log ${REPORTDIR}/ + SSHLibrary.Get File ${DESTDIR}/docker-bench-${node}.json ${REPORTDIR}/ + END Get Node Addresses ${stdout}= Execute Command @@ -57,11 +64,13 @@ Get Node Addresses Set Test Variable @{nodes} Copy Test Software To All Nodes - :FOR ${node} IN @{nodes} - \ Execute Command ssh ${SSH_OPTS} ${node} "mkdir -p ${NODEDIR}" - \ Execute Command scp ${SSH_OPTS} -rp ${DESTDIR}/. ${node}:${NODEDIR} + FOR ${node} IN @{nodes} + Execute Command ssh ${SSH_OPTS} ${node} "mkdir -p ${NODEDIR}" + Execute Command scp ${SSH_OPTS} -rp ${DESTDIR}/. ${node}:${NODEDIR} + END Remove Test Software From Nodes - :FOR ${node} IN @{nodes} - \ Execute Command ssh ${SSH_OPTS} ${node} "rm -rf ${NODEDIR}" + FOR ${node} IN @{nodes} + Execute Command ssh ${SSH_OPTS} ${node} "rm -rf ${NODEDIR}" + END Execute Command rm -rf ${DESTDIR} diff --git a/tests/k8s/kube-hunter/job.yaml b/tests/k8s/kube-hunter/job.yaml new file mode 100644 index 0000000..62079c5 --- /dev/null +++ b/tests/k8s/kube-hunter/job.yaml @@ -0,0 +1,31 @@ +############################################################################## +# Copyright (c) 2020 AT&T Intellectual Property. # +# Copyright (c) 2020 Nokia. # +# # +# 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. # +############################################################################## +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: kube-hunter +spec: + template: + spec: + containers: + - name: kube-hunter + image: {{ image }} + command: ["kube-hunter"] + args: ["--pod"] + restartPolicy: Never + backoffLimit: 4 diff --git a/tests/k8s/kube-hunter/kube-hunter.resource b/tests/k8s/kube-hunter/kube-hunter.resource new file mode 100644 index 0000000..561dea2 --- /dev/null +++ b/tests/k8s/kube-hunter/kube-hunter.resource @@ -0,0 +1,123 @@ +############################################################################## +# Copyright (c) 2020 AT&T Intellectual Property. # +# Copyright (c) 2020 Nokia. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you maynot 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. # +############################################################################## + + +*** Settings *** +Library Collections +Library OperatingSystem +Library Process +Library SSHLibrary +Library String + + +*** Variables *** +${REPORTDIR} ${LOG_PATH}/${SUITE_NAME.replace(' ','_')} +&{KUBE_HUNTER} path=akraino +... name=validation:kube-hunter-latest + + +*** Keywords *** +Open Connection And Log In + Open Connection ${HOST} + Login With Public Key ${USERNAME} ${SSH_KEYFILE} + +Get Cluster Address + ${result}= Run Process kubectl config view --minify + ... -o jsonpath\={.clusters[0].cluster.server} + Should Be Equal As Integers ${result.rc} 0 + ${addr}= Fetch From Right ${result.stdout} :// + ${addr}= Fetch From Left ${addr} : + Should Not Be Empty ${addr} + [Return] ${addr} + +Get Remote Addresses + ${result}= Run Process kubectl get nodes + ... -o jsonpath\={.items[*].status.addresses[?(@.type\=\="ExternalIP")].address} + Should Be Equal As Integers ${result.rc} 0 + Pass Execution If '${result.stdout}' == '${EMPTY}' No external node IPs exposed + @{addrs}= Split String ${result.stdout} + [Return] ${addrs} + +Upload To Internal Registry + [Arguments] ${path} ${name} + ${rc}= Execute Command + ... docker pull ${path}/${name} + ... return_stdout=False return_rc=True + Should Be Equal As Integers ${rc} 0 + ${rc}= Execute Command + ... docker tag ${path}/${name} ${INT_REG}/bluval/${name} + ... return_stdout=False return_rc=True + Should Be Equal As Integers ${rc} 0 + ${rc}= Execute Command + ... docker push ${INT_REG}/bluval/${name} + ... return_stdout=False return_rc=True + Should Be Equal As Integers ${rc} 0 + +Onboard Image + ${INT_REG}= Get Variable Value ${INTERNAL_REGISTRY} ${EMPTY} + Set Test Variable ${INT_REG} + Return From Keyword If $INT_REG == '${EMPTY}' + Open Connection And Log In + Upload To Internal Registry ${KUBE_HUNTER['path']} ${KUBE_HUNTER['name']} + Set To Dictionary ${KUBE_HUNTER} path=${INT_REG}/bluval + +Prepare Job Manifest + Run Process sed -i s|{{ image }}|${KUBE_HUNTER['path']}/${KUBE_HUNTER['name']}|g + ... ${CURDIR}/job.yaml + +Set Scan Status + [Arguments] ${log} + ${STATUS}= Evaluate "No vulnerabilities were found" in """${log}""" + Set Test Variable ${STATUS} + +Delete Scan Job + ${result}= Run Process kubectl delete job kube-hunter + Should Be Equal As Integers ${result.rc} 0 + +Should Discover No Vulnerabilities + Should Be True ${STATUS} + +Run Scan Within Pod + ${result}= Run Process kubectl apply -f job.yaml + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process kubectl wait --for\=condition\=complete + ... --timeout\=15m job/kube-hunter + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process kubectl get pods --selector\=job-name\=kube-hunter + ... -o jsonpath\={.items[*].metadata.name} + Should Be Equal As Integers ${result.rc} 0 + ${result}= Run Process kubectl logs ${result.stdout} + ... stdout=pod.log + Copy File pod.log ${REPORTDIR}/ + Should Be Equal As Integers ${result.rc} 0 + Set Scan Status ${result.stdout} + +Run Node Scan + ${addrs}= Get Remote Addresses + ${result}= Run Process kube-hunter --remote @{addrs} + ... stdout=node.log + Copy File node.log ${REPORTDIR}/ + Should Be Equal As Integers ${result.rc} 0 + Set Scan Status ${result.stdout} + +Run Cluster Scan + ${addr}= Get Cluster Address + ${result}= Run Process kube-hunter --remote ${addr} + ... stdout=cluster.log + Copy File cluster.log ${REPORTDIR}/ + Should Be Equal As Integers ${result.rc} 0 + Set Scan Status ${result.stdout} diff --git a/tests/k8s/kube-hunter/kube-hunter.robot b/tests/k8s/kube-hunter/kube-hunter.robot new file mode 100644 index 0000000..4ef9bf6 --- /dev/null +++ b/tests/k8s/kube-hunter/kube-hunter.robot @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2020 AT&T Intellectual Property. # +# Copyright (c) 2020 Nokia. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you maynot 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. # +############################################################################## + + +*** Settings *** +Documentation Hunt for security weaknesses in Kubernetes cluster +Resource kube-hunter.resource + + +*** Test Cases *** +Cluster Remote Scanning + Run Cluster Scan + Should Discover No Vulnerabilities + +Node Remote Scanning + Run Node Scan + Should Discover No Vulnerabilities + +Inside-a-Pod Scanning + [Setup] Run Keywords Onboard Image + ... Prepare Job Manifest + Run Scan Within Pod + Should Discover No Vulnerabilities + [Teardown] Run Keywords Delete Scan Job + ... Close All Connections diff --git a/tests/os/lynis/lynis.robot b/tests/os/lynis/lynis.robot index 8d0069a..7d88c0f 100644 --- a/tests/os/lynis/lynis.robot +++ b/tests/os/lynis/lynis.robot @@ -58,7 +58,9 @@ Uninstall Lynis Download Logs [Documentation] Downloading logs and removing them + Execute Command chmod +r /var/log/lynis.log sudo=True SSHLibrary.Get File /var/log/lynis.log ${OUTPUT DIR}/lynis.log Execute Command rm /var/log/lynis.log sudo=True + Execute Command chmod +r /var/log/lynis-report.dat sudo=True SSHLibrary.Get File /var/log/lynis-report.dat ${OUTPUT DIR}/lynis-report.dat - Execute Command rm /var/log/lynis-report.dat sudo=True \ No newline at end of file + Execute Command rm /var/log/lynis-report.dat sudo=True diff --git a/ui/CHANGELOG.md b/ui/CHANGELOG.md index 6ea7dfc..fa194e3 100644 --- a/ui/CHANGELOG.md +++ b/ui/CHANGELOG.md @@ -259,3 +259,13 @@ All notable changes to this project will be documented in this file. - Validation results are ignored when there are no robot test results associated with them ### Removed + +## [0.4.7-SNAPSHOT] - 21 January 2020 +### Added +- Messages and Arguments of Robot keywords are displayed + +### Changed +- The correct indentation is used for displaying Robot keywords +- Improvement of exception handling + +### Removed diff --git a/ui/pom.xml b/ui/pom.xml index 1a77fc8..059d696 100644 --- a/ui/pom.xml +++ b/ui/pom.xml @@ -14,7 +14,7 @@ org.akraino.validation ui - 0.4.6-SNAPSHOT + 0.4.7-SNAPSHOT Bluval UI Maven Webapp war diff --git a/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java b/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java index ffd27a8..685f1e8 100644 --- a/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java +++ b/ui/src/main/java/org/akraino/validation/ui/client/nexus/NexusExecutorClient.java @@ -20,8 +20,6 @@ import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -32,7 +30,6 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Locale; -import java.util.NoSuchElementException; import javax.annotation.Nonnull; @@ -47,6 +44,7 @@ import org.akraino.validation.ui.entity.ValidationDbTestResult; import org.akraino.validation.ui.entity.WRobotDbTestResult; import org.akraino.validation.ui.service.DbAdapter; import org.apache.commons.httpclient.HttpException; +import org.json.JSONException; import org.json.JSONObject; import org.json.XML; import org.jsoup.Jsoup; @@ -59,15 +57,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientHandlerException; import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; @@ -114,8 +109,7 @@ public final class NexusExecutorClient { } public List getResource(String endpoint) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { List resources = new ArrayList(); String nexusUrl = this.baseurl; if (endpoint != null) { @@ -141,23 +135,19 @@ public final class NexusExecutorClient { } public List getResource(@Nonnull String endpoint1, @Nonnull String endpoint2) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { String endpoint = endpoint1 + "/" + endpoint2; return this.getResource(endpoint); } public List getResource(@Nonnull String endpoint1, @Nonnull String endpoint2, @Nonnull String endpoint3) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { String endpoint = endpoint1 + "/" + endpoint2 + "/" + endpoint3; return this.getResource(endpoint); } public ValidationDbTestResult getResult(@Nonnull String name, @Nonnull String version, @Nonnull String siloText, - @Nonnull String timestamp) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException, NullPointerException { + @Nonnull String timestamp) throws IndexOutOfBoundsException, HttpException, NullPointerException { String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version; LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get validation nexus test result"); WebResource webResource = this.client.resource(nexusUrl + "/"); @@ -198,16 +188,21 @@ public final class NexusExecutorClient { } List wTestResults = getWRobotTestResults(name, version, siloText, timestamp); if (wTestResults.size() < 1) { - throw new RuntimeException("No robot test results could be obtained."); + return null; } vDbResult.setResult(determineResult(wTestResults)); List wDbResults = new ArrayList(); for (WRobotNexusTestResult wTestResult : wTestResults) { - WRobotDbTestResult wDbResult = new WRobotDbTestResult(); - wDbResult.setLayer(wTestResult.getLayer()); - ObjectMapper mapper = new ObjectMapper(); - wDbResult.setRobotTestResults(mapper.writeValueAsString(wTestResult.getRobotNexusTestResults())); - wDbResults.add(wDbResult); + try { + WRobotDbTestResult wDbResult = new WRobotDbTestResult(); + wDbResult.setLayer(wTestResult.getLayer()); + ObjectMapper mapper = new ObjectMapper(); + wDbResult.setRobotTestResults(mapper.writeValueAsString(wTestResult.getRobotNexusTestResults())); + wDbResults.add(wDbResult); + } catch (JsonProcessingException e) { + LOGGER.warn(EELFLoggerDelegate.auditLogger, + "Exception occured while processing JSON. " + UserUtils.getStackTrace(e)); + } } vDbResult.setWRobotDbTestResults(new HashSet(wDbResults)); return vDbResult; @@ -215,8 +210,7 @@ public final class NexusExecutorClient { public List getResults(@Nonnull String name, @Nonnull String version, @Nonnull String siloText, int noOfLastElements) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version; LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get validation Nexus test results"); WebResource webResource = this.client.resource(nexusUrl + "/"); @@ -238,7 +232,11 @@ public final class NexusExecutorClient { timestamp = timestamp.substring(0, timestamp.length() - 1); ValidationDbTestResult vDbResult = dbAdapter.getValidationTestResult(siloText, timestamp); if (vDbResult == null || vDbResult.getDateStorage() == null) { - vDbResults.add(this.getResult(name, version, siloText, timestamp)); + ValidationDbTestResult vDbResult2 = this.getResult(name, version, siloText, timestamp); + if (vDbResult2 == null) { + continue; + } + vDbResults.add(vDbResult2); } else { // Just to avoid deletion of already received validation timestamp results vDbResult = new ValidationDbTestResult(); @@ -254,10 +252,9 @@ public final class NexusExecutorClient { vDbResult.setTimestamp(timestamp); vDbResults.add(vDbResult); } - } catch (HttpException | RuntimeException ex) { + } catch (HttpException | IndexOutOfBoundsException | NullPointerException ex) { LOGGER.warn(EELFLoggerDelegate.auditLogger, "Exception occured while retrieving timestamp : " + timestamp + " result." + UserUtils.getStackTrace(ex)); - continue; } } return vDbResults; @@ -265,8 +262,7 @@ public final class NexusExecutorClient { public List getResults(@Nonnull String name, @Nonnull String version, @Nonnull String siloText, @Nonnull Date date) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException, NullPointerException { + throws IndexOutOfBoundsException, HttpException, NullPointerException, ParseException { String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version; LOGGER.debug(EELFLoggerDelegate.applicationLogger, "Trying to get validation Nexus results based on date"); WebResource webResource = this.client.resource(nexusUrl + "/"); @@ -286,11 +282,13 @@ public final class NexusExecutorClient { String timestamp = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); timestamp = timestamp.substring(0, timestamp.length() - 1); ValidationDbTestResult vDbResult = this.getResult(name, version, siloText, timestamp); + if (vDbResult == null) { + continue; + } vDbResults.add(vDbResult); - } catch (HttpException | RuntimeException ex) { + } catch (HttpException | IndexOutOfBoundsException | NullPointerException ex) { LOGGER.warn(EELFLoggerDelegate.auditLogger, "Exception occured while retrieving timestamp results. " + UserUtils.getStackTrace(ex)); - continue; } } return vDbResults; @@ -298,8 +296,7 @@ public final class NexusExecutorClient { public ValidationDbTestResult getLastResultBasedOnOutcome(@Nonnull String name, @Nonnull String version, @Nonnull String siloText, List layers, Boolean optional, boolean outcome) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException, NullPointerException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version; LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get last result based on outcome"); WebResource webResource = this.client.resource(nexusUrl + "/"); @@ -335,6 +332,9 @@ public final class NexusExecutorClient { String elementTimestamp = element.getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); elementTimestamp = elementTimestamp.substring(0, elementTimestamp.length() - 1); ValidationDbTestResult vDbResult = this.getResult(name, version, siloText, elementTimestamp); + if (vDbResult == null) { + continue; + } if (vDbResult.getResult() != outcome) { continue; } @@ -351,10 +351,9 @@ public final class NexusExecutorClient { } } return vDbResult; - } catch (HttpException | RuntimeException ex) { + } catch (HttpException | IndexOutOfBoundsException | NullPointerException ex) { LOGGER.warn(EELFLoggerDelegate.auditLogger, "Error when trying to retrieve results. " + UserUtils.getStackTrace(ex)); - continue; } } return null; @@ -362,8 +361,7 @@ public final class NexusExecutorClient { public ValidationDbTestResult getLastResultBasedOnOutcome(@Nonnull String name, @Nonnull String version, @Nonnull String siloText, Boolean allLayers, Boolean optional, boolean outcome) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException, ParseException, NullPointerException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version; LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get last result based on outcome"); WebResource webResource = this.client.resource(nexusUrl + "/"); @@ -399,6 +397,9 @@ public final class NexusExecutorClient { String elementTimestamp = element.getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); elementTimestamp = elementTimestamp.substring(0, elementTimestamp.length() - 1); ValidationDbTestResult vDbResult = this.getResult(name, version, siloText, elementTimestamp); + if (vDbResult == null) { + continue; + } if (vDbResult.getResult() != outcome) { continue; } @@ -409,10 +410,9 @@ public final class NexusExecutorClient { continue; } return vDbResult; - } catch (HttpException | RuntimeException ex) { + } catch (HttpException | IndexOutOfBoundsException | NullPointerException ex) { LOGGER.warn(EELFLoggerDelegate.auditLogger, "Error when trying to retrieve results. " + UserUtils.getStackTrace(ex)); - continue; } } return null; @@ -420,11 +420,10 @@ public final class NexusExecutorClient { public List getWRobotTestResults(@Nonnull String name, @Nonnull String version, @Nonnull String siloText, @Nonnull String timestamp) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { String nexusUrl = this.baseurl + "/" + siloText + "/" + "bluval_results/" + name + "/" + version + "/" + timestamp + "/results"; - List listOfwrappers = new ArrayList(); + List listOfWrappers = new ArrayList(); LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get the blueprint layers"); WebResource webResource = this.client.resource(nexusUrl + "/"); LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); @@ -440,7 +439,7 @@ public final class NexusExecutorClient { try { String layer = elements.get(i).getElementsByTag("td").get(0).getElementsByTag("a").get(0).text(); layer = layer.substring(0, layer.length() - 1); - if (layer.contains("test")) { + if (layer.contains("test") || layer.contains("service") || layer.contains("home")) { continue; } List robotTestResults = getRobotTestResults(nexusUrl + "/" + layer); @@ -450,19 +449,17 @@ public final class NexusExecutorClient { WRobotNexusTestResult wrapper = new WRobotNexusTestResult(); wrapper.setLayer(layer); wrapper.setRobotNexusTestResults(robotTestResults); - listOfwrappers.add(wrapper); - } catch (IllegalArgumentException | HttpException | NullPointerException ex) { + listOfWrappers.add(wrapper); + } catch (IndexOutOfBoundsException | HttpException | NullPointerException ex) { LOGGER.warn(EELFLoggerDelegate.auditLogger, - "Exception occured while retrieving robot results. " + UserUtils.getStackTrace(ex)); - continue; + "Exception occured while retrieving wrapped robot results. " + UserUtils.getStackTrace(ex)); } } - return listOfwrappers; + return listOfWrappers; } private List getRobotTestResults(String resultsUrl) - throws ClientHandlerException, UniformInterfaceException, JsonParseException, JsonMappingException, - IOException, KeyManagementException, NoSuchAlgorithmException { + throws IndexOutOfBoundsException, HttpException, NullPointerException { List rTestResults = new ArrayList(); LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get test suites results"); WebResource webResource = this.client.resource(resultsUrl + "/"); @@ -489,17 +486,21 @@ public final class NexusExecutorClient { } String result = response.getEntity(String.class); JSONObject xmlJSONObj = XML.toJSONObject(result); - ObjectMapper mapper = new ObjectMapper(); - mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); - mapper.setSerializationInclusion(Include.NON_NULL); - RobotTestResult robotTestResult = mapper.readValue(xmlJSONObj.toString(), RobotTestResult.class); - robotTestResult.setName(testSuiteName); - rTestResults.add(robotTestResult); - } catch (Exception ex) { - LOGGER.warn(EELFLoggerDelegate.auditLogger, - "Exception occured while retrieving robot results. " + UserUtils.getStackTrace(ex)); - continue; + try { + ObjectMapper mapper = new ObjectMapper(); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); + mapper.setSerializationInclusion(Include.NON_NULL); + RobotTestResult robotTestResult = mapper.readValue(xmlJSONObj.toString(), RobotTestResult.class); + robotTestResult.setName(testSuiteName); + rTestResults.add(robotTestResult); + } catch (Exception ex) { + LOGGER.error(EELFLoggerDelegate.errorLogger, "Exception occured while deserializing for resource " + + resultsUrl + " " + UserUtils.getStackTrace(ex)); + } + } catch (IOException | JSONException ex) { + LOGGER.warn(EELFLoggerDelegate.auditLogger, "Exception occured while retrieving robot results from " + + resultsUrl + " . " + UserUtils.getStackTrace(ex)); } } return rTestResults; @@ -564,22 +565,30 @@ public final class NexusExecutorClient { return desiredElements; } - private TestInfoYaml getTestInfo(String timestampUrl) throws JsonParseException, JsonMappingException, IOException { + private TestInfoYaml getTestInfo(String timestampUrl) { LOGGER.info(EELFLoggerDelegate.applicationLogger, "Trying to get test info"); WebResource webResource = this.client.resource(timestampUrl + "/results/test_info.yaml"); LOGGER.debug(EELFLoggerDelegate.debugLogger, "Request URI of get: " + webResource.getURI().toString()); ClientResponse response = webResource.get(ClientResponse.class); if (response.getStatus() != 200) { + LOGGER.warn(EELFLoggerDelegate.auditLogger, "No test_info.yaml file was found"); + return null; + } + try { + String testInfo = response.getEntity(String.class); + ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory()); + Object obj; + obj = yamlReader.readValue(testInfo, Object.class); + ObjectMapper mapper = new ObjectMapper(); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); + mapper.setSerializationInclusion(Include.NON_NULL); + ObjectMapper jsonWriter = new ObjectMapper(); + return mapper.readValue(jsonWriter.writeValueAsString(obj), TestInfoYaml.class); + } catch (IOException e) { + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error when parsing test_info.yaml file. " + UserUtils.getStackTrace(e)); return null; } - String testInfo = response.getEntity(String.class); - ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory()); - Object obj = yamlReader.readValue(testInfo, Object.class); - ObjectMapper mapper = new ObjectMapper(); - mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); - mapper.setSerializationInclusion(Include.NON_NULL); - ObjectMapper jsonWriter = new ObjectMapper(); - return mapper.readValue(jsonWriter.writeValueAsString(obj), TestInfoYaml.class); } } diff --git a/ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/Kw.java b/ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/Kw.java index d078bec..1e282bb 100644 --- a/ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/Kw.java +++ b/ui/src/main/java/org/akraino/validation/ui/client/nexus/resources/Kw.java @@ -21,6 +21,8 @@ import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; +import com.fasterxml.jackson.databind.JsonNode; + @JsonIgnoreProperties(ignoreUnknown = true) @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) public class Kw { @@ -42,6 +44,12 @@ public class Kw { @JsonProperty("kw") private List kw; + @JsonProperty("arguments") + private Kw.Arguments arguments; + + @JsonProperty("msg") + private JsonNode msg; + public Kw() { } @@ -94,6 +102,22 @@ public class Kw { this.kw = kw; } + public Kw.Arguments getArguments() { + return this.arguments; + } + + public void setArguments(Kw.Arguments arguments) { + this.arguments = arguments; + } + + public JsonNode getMsg() { + return this.msg; + } + + public void setMsg(JsonNode msg) { + this.msg = msg; + } + public class Status { @JsonProperty("endtime") private String endtime; @@ -133,4 +157,21 @@ public class Kw { } } + public class Arguments { + @JsonProperty("arg") + private List arg; + + public Arguments() { + + } + + public List getArg() { + return this.arg; + } + + public void setArg(List arg) { + this.arg = arg; + } + } + } diff --git a/ui/src/main/java/org/akraino/validation/ui/service/DbAdapter.java b/ui/src/main/java/org/akraino/validation/ui/service/DbAdapter.java index 756c03a..65154e0 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/DbAdapter.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/DbAdapter.java @@ -220,7 +220,7 @@ public class DbAdapter { public List readResultFromDb(String blueprintName, String version, String lab, List layers, Boolean allLayers, Boolean optional, Boolean outcome) - throws JsonParseException, JsonMappingException, IOException { + throws JsonParseException, JsonMappingException, IOException { synchronized (LOCK) { LabInfo actualLabInfo = null; if (lab != null) { @@ -625,8 +625,8 @@ public class DbAdapter { .equals(vNexusResult.getBlueprintInstance().getBlueprint().getBlueprintName())) { LOGGER.error(EELFLoggerDelegate.errorLogger, "Nexus has different data for blueprint : " + blueprint.getBlueprintName() - + ". Name inconsistency : " + blueprint.getBlueprintName() + " " - + vNexusResult.getBlueprintInstance().getBlueprint().getBlueprintName()); + + ". Name inconsistency : " + blueprint.getBlueprintName() + " " + + vNexusResult.getBlueprintInstance().getBlueprint().getBlueprintName()); return false; } } @@ -634,8 +634,8 @@ public class DbAdapter { if (!bluInst.getVersion().equals(vNexusResult.getBlueprintInstance().getVersion())) { LOGGER.error(EELFLoggerDelegate.errorLogger, "Nexus has different data for blueprint : " + bluInst.getBlueprint().getBlueprintName() - + ", version: " + bluInst.getVersion() + ". Version inconsistency : " - + bluInst.getVersion() + " " + vNexusResult.getBlueprintInstance().getVersion()); + + ", version: " + bluInst.getVersion() + ". Version inconsistency : " + + bluInst.getVersion() + " " + vNexusResult.getBlueprintInstance().getVersion()); return false; } } @@ -679,7 +679,7 @@ public class DbAdapter { if (vDbTimestamp.equals(vDbSubmission) || (vDbTimestamp.getSubmission() != null && !jnksJobNotify.getSubmissionId().equals(vDbTimestamp.getSubmission().getSubmissionId()))) { LOGGER.error(EELFLoggerDelegate.errorLogger, "Received same timestamp: " + jnksJobNotify.getTimestamp() - + " from nexus for submission id: " + jnksJobNotify.getSubmissionId()); + + " from nexus for submission id: " + jnksJobNotify.getSubmissionId()); return false; } if (!vDbSubmission.getAllLayers()) { @@ -707,7 +707,7 @@ public class DbAdapter { if (!vDbSubmission.getBlueprintInstance().getBlueprint().getBlueprintName() .equals(vDbTimestamp.getBlueprintInstance().getBlueprint().getBlueprintName()) || !vDbSubmission.getBlueprintInstance().getVersion() - .equals(vDbTimestamp.getBlueprintInstance().getVersion()) + .equals(vDbTimestamp.getBlueprintInstance().getVersion()) || !compareLabInfos(vDbSubmission.getLab(), vDbTimestamp.getLab())) { LOGGER.error(EELFLoggerDelegate.errorLogger, "No consistency exists in database records."); return false; diff --git a/ui/src/main/java/org/akraino/validation/ui/service/IntegratedResultService.java b/ui/src/main/java/org/akraino/validation/ui/service/IntegratedResultService.java index 5ad2201..1a707a9 100644 --- a/ui/src/main/java/org/akraino/validation/ui/service/IntegratedResultService.java +++ b/ui/src/main/java/org/akraino/validation/ui/service/IntegratedResultService.java @@ -16,8 +16,6 @@ package org.akraino.validation.ui.service; import java.io.IOException; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -45,8 +43,6 @@ import org.springframework.transaction.annotation.Transactional; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; -import com.sun.jersey.api.client.ClientHandlerException; -import com.sun.jersey.api.client.UniformInterfaceException; @Service @Transactional @@ -63,9 +59,7 @@ public class IntegratedResultService { @Autowired DbAdapter dbAdapter; - public List getLabsFromNexus() - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, IOException, IllegalArgumentException, ParseException { + public List getLabsFromNexus() throws IndexOutOfBoundsException, HttpException, NullPointerException { List labs = new ArrayList(); for (String cLabSilo : nexusService.getResource(null)) { for (LabInfo labInfo : dbAdapter.getLabs()) { @@ -78,31 +72,25 @@ public class IntegratedResultService { } public List getBlueprintNamesOfLabFromNexus(@Nonnull String lab) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, IOException, IllegalArgumentException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException, IllegalArgumentException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); } List rNames = new ArrayList(); - try { - List cNames = nexusService.getResource(dbAdapter.getLab(lab).getSilo() + "/bluval_results"); - for (String cName : cNames) { - if (cName.equals("family") || cName.equals("ta") || cName.equals("job")) { - continue; - } - rNames.add(cName); + List cNames = nexusService.getResource(dbAdapter.getLab(lab).getSilo() + "/bluval_results"); + for (String cName : cNames) { + if (cName.equals("family") || cName.equals("ta") || cName.equals("job")) { + continue; } - } catch (HttpException ex) { - LOGGER.warn(EELFLoggerDelegate.auditLogger, - "Error when retrieving blueprint names from nexus" + UserUtils.getStackTrace(ex)); + rNames.add(cName); } + return rNames; } public List getBlueprintVersionsFromNexus(@Nonnull String name, @Nonnull String lab) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, IOException, IllegalArgumentException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException, IllegalArgumentException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); @@ -111,26 +99,20 @@ public class IntegratedResultService { } public List getBlueprintTimeStampsFromNexus(@Nonnull String name, @Nonnull String version, - @Nonnull String lab) throws JsonParseException, JsonMappingException, KeyManagementException, - ClientHandlerException, UniformInterfaceException, NoSuchAlgorithmException, IOException, ParseException { + @Nonnull String lab) + throws IndexOutOfBoundsException, HttpException, NullPointerException, IllegalArgumentException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); } List timestamps = new ArrayList(); - try { - timestamps = nexusService.getResource(labInfo.getSilo() + "/bluval_results", name, version); - } catch (HttpException ex) { - LOGGER.warn(EELFLoggerDelegate.auditLogger, - "Error when retrieving blueprint names from nexus" + UserUtils.getStackTrace(ex)); - } + timestamps = nexusService.getResource(labInfo.getSilo() + "/bluval_results", name, version); return timestamps; } public List getResultsFromNexus(@Nonnull String name, @Nonnull String version, @Nonnull String lab, int noTimestamps) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, IOException, IllegalArgumentException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException, IllegalArgumentException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); @@ -139,9 +121,8 @@ public class IntegratedResultService { } public ValidationDbTestResult getResultFromNexus(@Nonnull String name, @Nonnull String version, @Nonnull String lab, - @Nonnull String timestamp) throws JsonParseException, JsonMappingException, IOException, - KeyManagementException, ClientHandlerException, UniformInterfaceException, NoSuchAlgorithmException, - NullPointerException, ParseException { + @Nonnull String timestamp) + throws IndexOutOfBoundsException, HttpException, NullPointerException, IllegalArgumentException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); @@ -156,8 +137,7 @@ public class IntegratedResultService { public ValidationDbTestResult getLastResultBasedOnOutcomeFromNexus(@Nonnull String name, @Nonnull String version, @Nonnull String lab, Boolean allLayers, Boolean optional, boolean outcome) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, NullPointerException, IOException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException, IllegalArgumentException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); @@ -173,8 +153,7 @@ public class IntegratedResultService { public ValidationDbTestResult getLastResultBasedOnOutcomeFromNexus(@Nonnull String name, @Nonnull String version, @Nonnull String lab, @Nonnull List layers, Boolean optional, boolean outcome) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, NullPointerException, IOException, ParseException { + throws IndexOutOfBoundsException, HttpException, NullPointerException, IllegalArgumentException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); @@ -189,9 +168,8 @@ public class IntegratedResultService { } public List getBasedOnDateFromNexus(@Nonnull String name, @Nonnull String version, - @Nonnull String lab, @Nonnull Date date) - throws JsonParseException, JsonMappingException, IOException, ParseException, KeyManagementException, - ClientHandlerException, UniformInterfaceException, NoSuchAlgorithmException, NullPointerException { + @Nonnull String lab, @Nonnull Date date) throws IndexOutOfBoundsException, HttpException, + NullPointerException, IllegalArgumentException, ParseException { LabInfo labInfo = dbAdapter.getLab(lab); if (labInfo == null) { throw new IllegalArgumentException("Could not retrieve lab : " + lab.toString()); @@ -230,9 +208,8 @@ public class IntegratedResultService { return blueprintVersions; } - public ValidationDbTestResult getResults(@Nonnull String submissionId) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, IOException, NullPointerException, ParseException { + public ValidationDbTestResult getResults(@Nonnull String submissionId) throws IndexOutOfBoundsException, + NullPointerException, JsonParseException, JsonMappingException, IOException { Submission submission = submissionService.getSubmission(submissionId); ValidationDbTestResult vDbResult = dbAdapter.readResultFromDb(submissionId); return vDbResult == null ? this.getResultFromNexus( @@ -243,9 +220,8 @@ public class IntegratedResultService { } public ValidationDbTestResult getResult(@Nonnull String name, @Nonnull String version, @Nonnull String lab, - @Nonnull String timestamp) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, NullPointerException, IOException, ParseException { + @Nonnull String timestamp) throws IndexOutOfBoundsException, NullPointerException, JsonParseException, + JsonMappingException, IOException { LabInfo actualLabInfo = dbAdapter.getLab(lab); if (actualLabInfo == null) { return null; @@ -255,9 +231,8 @@ public class IntegratedResultService { } public ValidationDbTestResult getLastResultBasedOnOutcome(@Nonnull String name, @Nonnull String version, - @Nonnull String lab, Boolean allLayers, Boolean optional, boolean outcome) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, IOException, NullPointerException, ParseException { + @Nonnull String lab, Boolean allLayers, Boolean optional, boolean outcome) throws IndexOutOfBoundsException, + NullPointerException, JsonParseException, JsonMappingException, IOException { LabInfo actualLabInfo = dbAdapter.getLab(lab); if (actualLabInfo == null) { return null; @@ -287,8 +262,8 @@ public class IntegratedResultService { public ValidationDbTestResult getLastResultBasedOnOutcome(@Nonnull String name, @Nonnull String version, @Nonnull String lab, List layers, Boolean optional, boolean outcome) - throws JsonParseException, JsonMappingException, KeyManagementException, ClientHandlerException, - UniformInterfaceException, NoSuchAlgorithmException, IOException, NullPointerException, ParseException { + throws IndexOutOfBoundsException, NullPointerException, JsonParseException, JsonMappingException, + IOException { LabInfo actualLabInfo = dbAdapter.getLab(lab); if (actualLabInfo == null) { return null; diff --git a/ui/src/main/webapp/app/BluvalUI/ValidationResults/TestSuiteResults/TestSuiteResultsModal.html b/ui/src/main/webapp/app/BluvalUI/ValidationResults/TestSuiteResults/TestSuiteResultsModal.html index 507bd5b..0916b2c 100644 --- a/ui/src/main/webapp/app/BluvalUI/ValidationResults/TestSuiteResults/TestSuiteResultsModal.html +++ b/ui/src/main/webapp/app/BluvalUI/ValidationResults/TestSuiteResults/TestSuiteResultsModal.html @@ -13,9 +13,11 @@ 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. --> -
+
+ + @@ -401,24 +380,29 @@ div.box {

- {{kw.name}} + {{kw.name}} (Nested depth: {{$depth = $parent.$depth && $parent.$depth + 1 || 1}})

-
-

     Type: - {{kw.type}}

-

     Library: - {{kw.library}}

-

     - Documentation: {{kw.doc}}

-

     Start time: - {{kw.status.starttime}}

-

     End time: - {{kw.status.endtime}}

-

     Status: - {{kw.status.status}}

+
+

Type: + {{kw.type}}

+

Library: + {{kw.library}}

+

Documentation: {{kw.doc}}

+

Start time: + {{kw.status.starttime}}

+

End time: + {{kw.status.endtime}}

+

Status: + {{kw.status.status}}

+

Arguments: +

    +
  •     {{arg}}
  • +
+

+

Message: + {{kw.msg.content}}

-

     Used Robot - keywords:

+

Used Robot keywords:

@@ -428,24 +412,29 @@ div.box {

- {{kw.name}} + {{kw.name}} (Nested depth: {{$depth = $parent.$depth && $parent.$depth + 1 || 1}})

-
-

     Type: - {{kw.type}}

-

     Library: - {{kw.library}}

-

     - Documentation: {{kw.doc}}

-

     Start time: - {{kw.status.starttime}}

-

     End time: - {{kw.status.endtime}}

-

     Status: - {{kw.status.status}}

+
+

Type: + {{kw.type}}

+

Library: + {{kw.library}}

+

Documentation: {{kw.doc}}

+

Start time: + {{kw.status.starttime}}

+

End time: + {{kw.status.endtime}}

+

Status: + {{kw.status.status}}

+

Arguments: +

    +
  •     {{arg}}
  • +
+

+

Message: + {{kw.msg.content}}

-

     Used Robot - keywords:

+

Used Robot keywords:

diff --git a/ui/src/main/webapp/app/css/modal.css b/ui/src/main/webapp/app/css/modal.css new file mode 100644 index 0000000..e24832a --- /dev/null +++ b/ui/src/main/webapp/app/css/modal.css @@ -0,0 +1,18 @@ +.modal { + background-clip: padding-box; + background-color: #ffffff; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 8px; + box-shadow: 0 3px 5px 1px rgba(0, 0, 0, 0.4); + margin: 0 auto; + /* margin-bottom: 10%; */ + outline: medium none; + /* position: absolute; */ + padding: 25px; + height: 175px; + overflow-y: scroll; + /* top: 10%; */ + width: 1100px; + overflow-x: scroll; + z-index: -1; +} \ No newline at end of file diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Light-Italic.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Light-Italic.otf new file mode 100644 index 0000000..8b98d5d Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Light-Italic.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Light.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Light.otf new file mode 100644 index 0000000..587d871 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Light.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Medium-Italic.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Medium-Italic.otf new file mode 100644 index 0000000..f824bc2 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Medium-Italic.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Medium.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Medium.otf new file mode 100644 index 0000000..3085c1f Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II Medium.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Bold.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Bold.otf new file mode 100644 index 0000000..136afca Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Bold.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-BoldItalic.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-BoldItalic.otf new file mode 100644 index 0000000..77f0dbc Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-BoldItalic.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Italic.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Italic.otf new file mode 100644 index 0000000..5dc1da7 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Italic.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Regular.otf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Regular.otf new file mode 100644 index 0000000..a1a78eb Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATT II-Regular.otf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.eot b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.eot new file mode 100644 index 0000000..54f14ac Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.eot differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.svg b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.svg new file mode 100644 index 0000000..af4a28a --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.svg @@ -0,0 +1,3694 @@ + + + + +1.0 +Omnes_ATT W02 +Monotype Imaging Inc. + +Fonts.com WebFonts +http://webfonts.fonts.com +Home of the Web fonts + + +http://webfonts.fonts.com/Legal + +Generated by RoboFog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz AÁÀÂÄÅÃÆ CÇ DÐ EÉÈÊË I Í Ì Î Ï NÑ +OÓÒÔÖÕØŒ SŠ UÚÙÛÜ YÝŸ ZŽ Þ aáàâäåãæ cç dð eéèêë i ı í ì î ï nñ oóòôöõøœ sšß uúùûü yýÿ zž +þ 1234567890 ½ ¼ ¾ % ‰ $¢£¥ƒ€¤ † ‡ § ¶ # ^~µ +×± < = > ÷¬ !¡?¿ " & ' * ° . , : ; () [ \ ] {} / | +¦ _ ‚ „ … ‹› «» ‘ ’ “ ” • ­ - – — @ © ® ™ ªº ¹²³ ´ ` ˆ ˜ ¨ ¯ · ¸ + diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.ttf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.ttf new file mode 100644 index 0000000..4070202 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.ttf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.woff b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.woff new file mode 100644 index 0000000..48cd250 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02.woff differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.eot b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.eot new file mode 100644 index 0000000..c488fe7 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.eot differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.svg b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.svg new file mode 100644 index 0000000..c3a40bf --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.svg @@ -0,0 +1,3799 @@ + + + + +1.0 +Omnes_ATT W02 Italic +Monotype Imaging Inc. + +Fonts.com WebFonts +http://webfonts.fonts.com +Home of the Web fonts + + +http://webfonts.fonts.com/Legal + +Generated by RoboFog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz AÁÀÂÄÅÃÆ CÇ DÐ EÉÈÊË I Í Ì Î Ï NÑ +OÓÒÔÖÕØŒ SŠ UÚÙÛÜ YÝŸ ZŽ Þ aáàâäåãæ cç dð eéèêë i ı í ì î ï nñ oóòôöõøœ sšß uúùûü yýÿ zž +þ 1234567890 ½ ¼ ¾ % ‰ $¢£¥ƒ€¤ † ‡ § ¶ # ^~µ +×± < = > ÷¬ !¡?¿ " & ' * ° . , : ; () [ \ ] {} / | +¦ _ ‚ „ … ‹› «» ‘ ’ “ ” • ­ - – — @ © ® ™ ªº ¹²³ ´ ` ˆ ˜ ¨ ¯ · ¸ + diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.ttf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.ttf new file mode 100644 index 0000000..fd758ae Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.ttf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.woff b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.woff new file mode 100644 index 0000000..694ed53 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Italic.woff differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.eot b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.eot new file mode 100644 index 0000000..3401cd8 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.eot differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.svg b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.svg new file mode 100644 index 0000000..0849bf8 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.svg @@ -0,0 +1,3872 @@ + + + + +1.0 +Omnes_ATT W02 Light +Monotype Imaging Inc. + +Fonts.com WebFonts +http://webfonts.fonts.com +Home of the Web fonts + + +http://webfonts.fonts.com/Legal + +Generated in 2010 by FontLab Studio. Copyright info pending. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz AÁÀÂÄÅÃÆ CÇ DÐ EÉÈÊË I Í Ì Î Ï NÑ +OÓÒÔÖÕØŒ SŠ UÚÙÛÜ YÝŸ ZŽ Þ aáàâäåãæ cç dð eéèêë i ı í ì î ï nñ oóòôöõøœ sšß uúùûü yýÿ zž +þ 1234567890 ½ ¼ ¾ % ‰ $¢£¥ƒ€¤ † ‡ § ¶ # ^~µ +×± < = > ÷¬ !¡?¿ " & ' * ° . , : ; () [ \ ] {} / | +¦ _ ‚ „ … ‹› «» ‘ ’ “ ” • ­ - – — @ © ® ™ ªº ¹²³ ´ ` ˆ ˜ ¨ ¯ · ¸ + diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.ttf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.ttf new file mode 100644 index 0000000..d9da2b3 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.ttf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.woff b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.woff new file mode 100644 index 0000000..80aec06 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Light.woff differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.eot b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.eot new file mode 100644 index 0000000..82aee8e Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.eot differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.svg b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.svg new file mode 100644 index 0000000..80c7236 --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.svg @@ -0,0 +1,3030 @@ + + + + +1.0 +Omnes_ATT W02 Light Italic +Monotype Imaging Inc. + +Fonts.com WebFonts +http://webfonts.fonts.com +Home of the Web fonts + + +http://webfonts.fonts.com/Legal + +Generated in 2010 by FontLab Studio. Copyright info pending. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz AÁÀÂÄÅÃÆ CÇ DÐ EÉÈÊË I Í Ì Î Ï NÑ +OÓÒÔÖÕØŒ SŠ UÚÙÛÜ YÝŸ ZŽ Þ aáàâäåãæ cç dð eéèêë i ı í ì î ï nñ oóòôöõøœ sšß uúùûü yýÿ zž +þ 1234567890 ½ ¼ ¾ % ‰ $¢£¥ƒ€¤ † ‡ § ¶ # ^~µ +×± < = > ÷¬ !¡?¿ " & ' * ° . , : ; () [ \ ] {} / | +¦ _ ‚ „ … ‹› «» ‘ ’ “ ” • ­ - – — @ © ® ™ ªº ¹²³ ´ ` ˆ ˜ ¨ ¯ · ¸ + diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.ttf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.ttf new file mode 100644 index 0000000..558b5e9 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.ttf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.woff b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.woff new file mode 100644 index 0000000..14cbe85 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02LightItalic.woff differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.eot b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.eot new file mode 100644 index 0000000..41334d1 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.eot differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.svg b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.svg new file mode 100644 index 0000000..aa0c25d --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.svg @@ -0,0 +1,2473 @@ + + + + +1.0 +Omnes_ATT W02 Medium +Monotype Imaging Inc. + +Fonts.com WebFonts +http://webfonts.fonts.com +Home of the Web fonts + + +http://webfonts.fonts.com/Legal + +Generated in 2010 by FontLab Studio. Copyright info pending. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz AÁÀÂÄÅÃÆ CÇ DÐ EÉÈÊË I Í Ì Î Ï NÑ +OÓÒÔÖÕØŒ SŠ UÚÙÛÜ YÝŸ ZŽ Þ aáàâäåãæ cç dð eéèêë i ı í ì î ï nñ oóòôöõøœ sšß uúùûü yýÿ zž +þ 1234567890 ½ ¼ ¾ % ‰ $¢£¥ƒ€¤ † ‡ § ¶ # ^~µ +×± < = > ÷¬ !¡?¿ " & ' * ° . , : ; () [ \ ] {} / | +¦ _ ‚ „ … ‹› «» ‘ ’ “ ” • ­ - – — @ © ® ™ ªº ¹²³ ´ ` ˆ ˜ ¨ ¯ · ¸ + diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.ttf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.ttf new file mode 100644 index 0000000..ba031d6 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.ttf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.woff b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.woff new file mode 100644 index 0000000..32d9396 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02Medium.woff differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.eot b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.eot new file mode 100644 index 0000000..348cea6 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.eot differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.svg b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.svg new file mode 100644 index 0000000..5b2d52a --- /dev/null +++ b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.svg @@ -0,0 +1,3837 @@ + + + + +1.0 +Omnes_ATT W02 Medium Italic +Monotype Imaging Inc. + +Fonts.com WebFonts +http://webfonts.fonts.com +Home of the Web fonts + + +http://webfonts.fonts.com/Legal + +Generated in 2010 by FontLab Studio. Copyright info pending. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz AÁÀÂÄÅÃÆ CÇ DÐ EÉÈÊË I Í Ì Î Ï NÑ +OÓÒÔÖÕØŒ SŠ UÚÙÛÜ YÝŸ ZŽ Þ aáàâäåãæ cç dð eéèêë i ı í ì î ï nñ oóòôöõøœ sšß uúùûü yýÿ zž +þ 1234567890 ½ ¼ ¾ % ‰ $¢£¥ƒ€¤ † ‡ § ¶ # ^~µ +×± < = > ÷¬ !¡?¿ " & ' * ° . , : ; () [ \ ] {} / | +¦ _ ‚ „ … ‹› «» ‘ ’ “ ” • ­ - – — @ © ® ™ ªº ¹²³ ´ ` ˆ ˜ ¨ ¯ · ¸ + diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.ttf b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.ttf new file mode 100644 index 0000000..56bb37c Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.ttf differ diff --git a/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.woff b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.woff new file mode 100644 index 0000000..101d211 Binary files /dev/null and b/ui/src/main/webapp/app/fusion/external/b2b/css/b2b-angular/fonts/Omnes_ATTW02MediumItalic.woff differ diff --git a/ui/src/main/webapp/static/fusion/css/fusion-sunny.css b/ui/src/main/webapp/static/fusion/css/fusion-sunny.css index 243a7e7..6233b45 100644 --- a/ui/src/main/webapp/static/fusion/css/fusion-sunny.css +++ b/ui/src/main/webapp/static/fusion/css/fusion-sunny.css @@ -314,7 +314,7 @@ form { /* dummy class used to lock the form elements of a grid - ex. bulk transaction processing */ .alwaysEnabled { - + } .hidden { @@ -334,7 +334,7 @@ form { .selectedRow { /*background-color:#C4DFFB;*/ - + } /* Action Item styles */ diff --git a/ui/src/main/webapp/static/fusion/sample/css/welcome.css b/ui/src/main/webapp/static/fusion/sample/css/welcome.css index f970ecf..f30a1b7 100644 --- a/ui/src/main/webapp/static/fusion/sample/css/welcome.css +++ b/ui/src/main/webapp/static/fusion/sample/css/welcome.css @@ -155,7 +155,7 @@ a.loading { } #container { - + } #title {