Added kubernetes version of pynts simulator 99/14799/6
authorsaul.gill <saul.gill@est.tech>
Fri, 27 Jun 2025 12:00:24 +0000 (13:00 +0100)
committersaul.gill <saul.gill@est.tech>
Mon, 25 Aug 2025 13:35:24 +0000 (14:35 +0100)
Added flavour for ranpm, pynts, es-rapp use-case
Exposed config of dfc, xml2json and pmlog to new flavour
Added pynts simulator chart and added to new flavour
Added patch for kubernetes ppnt file permission issues
Added patch for CPS/DMI kafka user issues
Added CPS chart corrections
Added TEIV o-ran-smo-teiv-ran module sql changes

Issue-ID: NONRTRIC-1084
Change-Id: Iaccde739bb7952d9cd639bb04eae1b6007c8832e
Signed-off-by: saul.gill <saul.gill@est.tech>
44 files changed:
.gitignore
smo-install/helm-override/ranpm-pynts-es-rapp/network-simulators-override.yaml [new file with mode: 0644]
smo-install/helm-override/ranpm-pynts-es-rapp/network-simulators-topology-override.yaml [new file with mode: 0644]
smo-install/helm-override/ranpm-pynts-es-rapp/onap-flavour-config.yaml [new file with mode: 0644]
smo-install/helm-override/ranpm-pynts-es-rapp/oran-flavour-config.yaml [new file with mode: 0644]
smo-install/oran_oom/smo/common/resources/patch-cps-kafka-users.sh [new file with mode: 0644]
smo-install/oran_oom/smo/common/resources/patch-policy-kafka-users.sh
smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch-configmap.yaml [new file with mode: 0644]
smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch-rbac.yaml [new file with mode: 0644]
smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch.yaml [new file with mode: 0644]
smo-install/oran_oom/smo/ranpm/charts/dfc/config/application.yaml
smo-install/oran_oom/smo/ranpm/charts/dfc/templates/app-statefulset.yaml
smo-install/oran_oom/smo/ranpm/charts/dfc/values.yaml
smo-install/oran_oom/smo/ranpm/charts/kafka-producer-pm-xml2json/templates/app-statefulset.yaml
smo-install/oran_oom/smo/ranpm/charts/kafka-producer-pm-xml2json/values.yaml
smo-install/oran_oom/smo/ranpm/charts/nrt-pm-log/templates/app-configmap2.yaml
smo-install/oran_oom/smo/ranpm/charts/nrt-pm-log/values.yaml
smo-install/oran_oom/smo/topology-exposure-inventory/resources/init_sql/00_init-teiv-exposure-model.sql
smo-install/oran_oom/smo/topology-exposure-inventory/resources/init_sql/01_init-teiv-exposure-data.sql
smo-install/oran_oom/smo/topology-exposure-inventory/resources/init_sql/02_init-teiv-exposure-consumer-data.sql
smo-install/oran_oom/smo/topology-exposure-inventory/resources/init_sql/03_init-teiv-exposure-groups.sql
smo-install/scripts/layer-2/2-install-oran.sh
smo-install/tests_oom/du-simulator-pynts/Chart.yaml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/_3gpp-common-managed-element-running.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/draft-schema-mount.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-hardware-running.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-netconf-acm-running.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-netconf-server-running.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-yang-schema-mount.xml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-aggregation-base-d-operational-draft.xml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-aggregation-base-running-draft.xml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-usermgmt-operational.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-usermgmt-running.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/index.json [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/template.xml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/template_5G_NR.xml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/templates/configmap.yaml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/templates/configmapenv.yaml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/templates/deployment.yaml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/templates/pm-configmap.yaml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/templates/service.yaml [new file with mode: 0644]
smo-install/tests_oom/du-simulator-pynts/values.yaml [new file with mode: 0644]
smo-install/tests_oom/ru-du-simulators/requirements.yaml
smo-install/tests_oom/ru-du-simulators/values.yaml

index f154bc4..55765a3 100644 (file)
@@ -8,3 +8,4 @@
 .DS_Store
 docs/_build/
 index-cache.yaml
+**/.idea/
diff --git a/smo-install/helm-override/ranpm-pynts-es-rapp/network-simulators-override.yaml b/smo-install/helm-override/ranpm-pynts-es-rapp/network-simulators-override.yaml
new file mode 100644 (file)
index 0000000..eec7be5
--- /dev/null
@@ -0,0 +1,21 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+
+ru-du-simulators:
+  topologyServer: false
+  ruSimulator: false
+  duSimulator: false
+  duSimulatorPynts: true
\ No newline at end of file
diff --git a/smo-install/helm-override/ranpm-pynts-es-rapp/network-simulators-topology-override.yaml b/smo-install/helm-override/ranpm-pynts-es-rapp/network-simulators-topology-override.yaml
new file mode 100644 (file)
index 0000000..8127ecd
--- /dev/null
@@ -0,0 +1,19 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+#
+###
+# ##### Network Simulators #####
+# Blank for now
diff --git a/smo-install/helm-override/ranpm-pynts-es-rapp/onap-flavour-config.yaml b/smo-install/helm-override/ranpm-pynts-es-rapp/onap-flavour-config.yaml
new file mode 100644 (file)
index 0000000..fb98c97
--- /dev/null
@@ -0,0 +1,147 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+#
+
+cps:
+  cps-core:
+    image: onap/cps-and-ncmp:3.7.1-SNAPSHOT-20250806T082510Z
+    kafkaUser:
+      acls:
+        - name: cps-core-group
+          type: group
+          operations: [Read]
+        - name: cps-data-updated-events
+          type: topic
+          operations: [Write]
+        - name: dmi-cm-events
+          type: topic
+          operations: [Read]
+        - name: &ncmpAsyncM2MTopic ncmp-async-m2m
+          type: topic
+          operations: [Read]
+        - name: &cmAvcSubscriptionTopic cm-avc-subscription
+          type: topic
+          operations: [Read]
+        - name: &ncmpCmSubscriptionIn subscription
+          type: topic
+          operations: [All]
+        - name: &ncmpCmSubscriptionDmiIn ncmp-dmi-cm-avc-subscription
+          type: topic
+          operations: [Read]
+        - name: &ncmpCmSubscriptionDmiOut dmi-ncmp-cm-avc-subscription
+          type: topic
+          operations: [Read]
+        - name: &ncmpCmSubscriptionOut subscription-response
+          type: topic
+          operations: [Read]
+        - name: &ncmpCmEventsTopic cm-events
+          type: topic
+          operations: [Read]
+        - name: &dmiDeviceHeartbeatTopic dmi-device-heartbeat
+          type: topic
+          operations: [All]
+        - name: &lcmEventsTopic ncmp-events
+          type: topic
+          operations: [Read]
+  ncmp-dmi-plugin:
+    image: onap/ncmp-dmi-plugin:1.8.0-SNAPSHOT-latest
+    config:
+      dmiServiceUrl: http://ncmp-dmi-plugin:8080
+      sdnc:
+        url: http://sdnc:8282
+    kafkaUser:
+      authenticationType: scram-sha-512
+      acls:
+        - name: ncmp-dmi-plugin-group
+          type: group
+          operations: [Read]
+        - name: ncmp-dmi-cm-avc-subscription-ncmp-dmi-plugin
+          type: topic
+          operations: [Read]
+        - name: dmi-ncmp-cm-avc-subscription
+          type: topic
+          operations: [Write]
+        - name: ncmp-async-m2m
+          type: topic
+          operations: [Write]
+        - name: ncmp-events
+          type: topic
+          operations: [All]
+        - name: "unauthenticated.VES_O1_NOTIFY_PNF_REGISTRATION_OUTPUT"
+          type: topic
+          operations: [All]
+        - name: "unauthenticated.VES_PNFREG_OUTPUT"
+          type: topic
+          operations: [All]
+
+  cps-temporal:
+    config:
+      app:
+      listener:
+        dataUpdatedTopic: cps-data-updated-events
+    kafkaUser:
+      authenticationType: scram-sha-512
+      acls:
+        - name: cps-temporal-group
+          type: group
+          operations: [ Read ]
+        - name: cps-data-updated-events
+          type: topic
+          operations: [ Read ]
+
+policy:
+  policy-pap:
+    enabled: false
+  policy-apex-pdp:
+    enabled: false
+  policy-clamp-ac-k8s-ppnt:
+    repoList:
+      # This is the list of helm repositories allowed to be used
+      # by the policy-clamp-ac-k8s-ppnt chart.
+      # Helm repositories should be added as required.
+      # If you do not add your helm repository here,
+      # you will not be able to use it in the policy-clamp-ac-k8s-ppnt chart.
+      helm:
+        repos:
+          - repoName: kong
+            address: https://charts.konghq.com
+          - repoName: bitnami
+            address: https://charts.bitnami.com/bitnami
+          - repoName: local
+            address: http://10.101.3.89:18080
+
+  policy-clamp-ac-pf-ppnt:
+    enabled: false
+  policy-clamp-ac-http-ppnt:
+    enabled: false
+  policy-clamp-ac-a1pms-ppnt:
+    enabled: false
+
+mariadb-galera:
+  replicaCount: 1
+  mariadbOperator:
+    appVersion: 11.1.2
+    persistence:
+      storageClassName: smo-storage
+    livenessProbe:
+      initialDelaySeconds: 150
+    readinessProbe:
+      initialDelaySeconds: 150
+    startupProbe:
+      initialDelaySeconds: 150
+    galera:
+      enabled: false
+
diff --git a/smo-install/helm-override/ranpm-pynts-es-rapp/oran-flavour-config.yaml b/smo-install/helm-override/ranpm-pynts-es-rapp/oran-flavour-config.yaml
new file mode 100644 (file)
index 0000000..2c10adc
--- /dev/null
@@ -0,0 +1,57 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+#
+
+ranpm:
+  nrt-pm-log:
+    enabled: true
+    kafkaTopic:
+      - pmreports
+    jobDefinition:
+      owner: logger
+      infoTypeId: "PmData"
+      filter:
+        sourceNames: []
+        measObjInstIds: []
+        measTypesSpecs: []
+        measuredEntityDns: []
+      deliveryInfo:
+        topic: "pmreports"
+        bootStrapServers: "onap-strimzi-kafka-bootstrap.onap:9095"
+
+  nrt-kafka-producer-pm-xml2json:
+    enabled: true
+    dataTypeFormat: "TS28532"  # Set to "" for older 4G/Default Measurement file format
+
+  nrt-dfc:
+    enabled: true
+    fileReadyEventTopic: "unauthenticated.SEC_3GPP_PERFORMANCEASSURANCE_OUTPUT"
+    fileReadyMessageClass: "TS28532FileReadyMessage"
+    kafkaUser:
+      name: service-account-dfc
+      acls:
+        - name: osc-dmaap-adapter-unauthenticated.SEC_3GPP_PERFORMANCEASSURANCE_OUTPUT
+          type: group
+          operations: [ Read ]
+        - name: unauthenticated.SEC_3GPP_PERFORMANCEASSURANCE_OUTPUT
+          type: topic
+          operations: [ Read ]
+        - name: collected-file
+          type: topic
+          operations: [ Read,Write ]
+    kafkaTopic:
+      - "unauthenticated.sec-3gpp-performanceassurance-output"
+      - collected-file
\ No newline at end of file
diff --git a/smo-install/oran_oom/smo/common/resources/patch-cps-kafka-users.sh b/smo-install/oran_oom/smo/common/resources/patch-cps-kafka-users.sh
new file mode 100644 (file)
index 0000000..0642f47
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+# ============LICENSE_START=======================================================
+# Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+# ============LICENSE_END============================================
+#
+
+# TODO: THIS SHOULD BE REMOVED ONCE the OOM CPS CHARTS ARE UPDATED TO WORK WITH NEW IMAGES
+
+# This will patch the below kafka users with the new group acl
+# This acl configuration gives the user permission to read from all groups
+
+# create an array with the kafka users
+kafka_users=(
+  "cps-core-ku"
+)
+
+# Iterate over an array of kafka users and check whether the user exists or not
+for user in "${kafka_users[@]}"; do
+  if kubectl get kafkauser "$user" -n onap; then
+    echo "Kafka user $user exists."
+    #patch the kafka users with new group acl
+    kubectl patch kafkauser "$user" -n onap --type='json' -p '[
+        {
+            "op": "add",
+            "path": "/spec/authorization/acls/-",
+            "value": {
+            "resource": {
+                "type": "group",
+                "name": "*",
+                "patternType": "literal"
+            },
+            "operation": "All",
+            }
+        }
+    ]'
+  else
+    echo "Kafka user $user does not exist."
+  fi
+done
+
index 5148900..068d5ca 100644 (file)
@@ -18,7 +18,6 @@
 
 # TODO: THIS SHOULD BE REMOVED ONCE the OOM POLICY CHARTS ARE UPDATED TO WORK WITH SYNC TOPIC
 
-
 # This will patch the below kafka users with the new group acl
 # This acl configuration gives the user permission to read from all groups
 
diff --git a/smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch-configmap.yaml b/smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch-configmap.yaml
new file mode 100644 (file)
index 0000000..3cb324b
--- /dev/null
@@ -0,0 +1,26 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+#
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: cps-kafkauser-patch-config
+  annotations:
+    "helm.sh/hook": pre-install
+    "helm.sh/hook-weight": "2"
+data:
+{{ tpl (.Files.Glob "resources/patch-cps-kafka-users.sh").AsConfig . | indent 2 }}
\ No newline at end of file
diff --git a/smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch-rbac.yaml b/smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch-rbac.yaml
new file mode 100644 (file)
index 0000000..dd0c1c2
--- /dev/null
@@ -0,0 +1,53 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
+#  ========================================================================
+#  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.
+#  ============LICENSE_END=================================================
+
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: cps-kafkauser-patch-sa
+  namespace: smo
+  annotations:
+    "helm.sh/hook": pre-install
+    "helm.sh/hook-weight": "1"
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: cps-kafkauser-patch-role
+  annotations:
+    "helm.sh/hook": pre-install
+    "helm.sh/hook-weight": "1"
+rules:
+  - apiGroups:      ['kafka.strimzi.io']
+    resources:      ['kafkausers']
+    verbs:          ["get","list","watch","patch","update"]
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: cps-kafkauser-patch-rb
+  namespace: onap
+  annotations:
+    "helm.sh/hook": pre-install
+    "helm.sh/hook-weight": "1"
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: cps-kafkauser-patch-role
+subjects:
+- kind: ServiceAccount
+  name: cps-kafkauser-patch-sa
+  namespace: smo
\ No newline at end of file
diff --git a/smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch.yaml b/smo-install/oran_oom/smo/common/templates/cps-kafkauser-patch.yaml
new file mode 100644 (file)
index 0000000..8c8468f
--- /dev/null
@@ -0,0 +1,43 @@
+################################################################################
+#   Copyright (C) 2025 OpenInfra Foundation Europe                             #
+#                                                                              #
+#   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: cps-kafkauser-patch
+  annotations:
+    "helm.sh/hook": pre-install
+    "helm.sh/hook-weight": "4"
+spec:
+  template:
+    spec:
+      serviceAccountName: cps-kafkauser-patch-sa
+      containers:
+      - name: cps-kafkauser-patch-container
+        image: bitnami/kubectl:1.32.2
+        command: ["bash","/scripts/patch-cps-kafka-users.sh"]
+        securityContext:
+          allowPrivilegeEscalation: false
+          runAsUser: 0
+        volumeMounts:
+          - name: cps-kafkauser-patch-config-volume
+            mountPath: /scripts
+      volumes:
+        - name: cps-kafkauser-patch-config-volume
+          configMap:
+            name: cps-kafkauser-patch-config
+            defaultMode: 0755
+      restartPolicy: Never
index 41bb27c..cc567d6 100644 (file)
@@ -54,7 +54,7 @@ app:
   # Example values:
   #   file-ready-message-class: "" (empty) -> Default format(org.oran.datafile.model.DefaultFileReadyMessage)
   #   file-ready-message-class: "TS28532" (Not empty) -> org.oran.datafile.model.TS28532FileReadyMessage
-  file-ready-message-class:
+  file-ready-message-class: ${FILE_READY_MESSAGE_CLASS}
    # KAFKA boostrap servers. This is only needed if there are Information Types that uses a kafkaInputTopic
   # several redundant boostrap servers can be specified, separated by a comma ','.
   kafka:
@@ -65,7 +65,7 @@ app:
     # Override by env var
     client-id:
     # input topic
-    file-ready-event-topic: unauthenticated.VES_NOTIFICATION_OUTPUT
+    file-ready-event-topic: ${FILE_READY_EVENT_TOPIC}
       # Configues if oath2 tokens shall be used. If set to true, auth-token-file must also be configured
     use-oath-token: true
     ssl:
index 8dfa211..cfff8f4 100644 (file)
@@ -77,6 +77,10 @@ spec:
         - mountPath: /token-cache
           name: token-cache-volume
         env:
+        - name: FILE_READY_EVENT_TOPIC
+          value: {{ .Values.fileReadyEventTopic | default "unauthenticated.VES_NOTIFICATION_OUTPUT" }}
+        - name: FILE_READY_MESSAGE_CLASS
+          value: {{ .Values.fileReadyMessageClass | default "" }}
         - name: APPID
           valueFrom:
             fieldRef:
index b802f12..1a0c649 100644 (file)
@@ -36,4 +36,7 @@ kafkaUser:
 # This is a reference to the list of topics used by this component
 kafkaTopic:
   - "unauthenticated.ves-notification-output"
-  - collected-file
\ No newline at end of file
+  - collected-file
+
+fileReadyEventTopic: "unauthenticated.VES_NOTIFICATION_OUTPUT"
+fileReadyMessageClass: ""
\ No newline at end of file
index 70d7bdd..c8c19f7 100644 (file)
@@ -72,7 +72,7 @@ spec:
         #   DATA_TYPE_FORMAT = "" -> older 4G/Default Measurement file format
         #   DATA_TYPE_FORMAT = "TS28532" -> 5G/3GPP-TS-28.532 Measurement file format
         - name: DATA_TYPE_FORMAT
-          value: ""
+          value: {{ .Values.dataTypeFormat | quote | default "" }}
         - name: ICS
           value: informationservice.nonrtric:9082
         - name: SELF
index e3b605b..5ed0866 100644 (file)
@@ -40,6 +40,8 @@ kafkaUser:
       type: topic
       operations: [Read, Write]
 
+dataTypeFormat: ""
+
 # This is a reference to the list of topics used by this component
 kafkaTopic:
   - collected-file
index d909537..7cd5476 100644 (file)
@@ -22,4 +22,20 @@ metadata:
   name: pmlog-job-cm
 
 data:
-{{ (.Files.Glob "config/jobDefinition.json").AsConfig | nindent 2 }}
+  jobDefinition.json: |-
+    {
+      "info_type_id": {{ .Values.jobDefinition.infoTypeId | quote }},
+      "job_owner": {{ .Values.jobDefinition.owner | quote }},
+      "job_definition": {
+        "filter": {
+          "sourceNames": {{ .Values.jobDefinition.filter.sourceNames | toJson }},
+          "measObjInstIds": {{ .Values.jobDefinition.filter.measObjInstIds | toJson }},
+          "measTypeSpecs": {{ .Values.jobDefinition.filter.measTypesSpecs | toJson }},
+          "measuredEntityDns": {{ .Values.jobDefinition.filter.measuredEntityDns | toJson }}
+        },
+        "deliveryInfo": {
+          "bootStrapServers": {{ .Values.jobDefinition.deliveryInfo.bootStrapServers | quote }},
+          "topic": {{ .Values.jobDefinition.deliveryInfo.topic | quote }}
+        }
+      }
+    }
index d9ca905..0eae5f8 100644 (file)
@@ -36,4 +36,19 @@ kafkaUser:
 
 # This is a reference to the list of topics used by this component
 kafkaTopic:
-  - pmreports
\ No newline at end of file
+  - pmreports
+
+jobDefinition:
+  owner: console
+  infoTypeId: "PmData"
+  filter:
+    sourceNames: []
+    measObjInstIds: []
+    measTypeSpecs:
+      - measObjClass: NRCellDU
+        measTypes:
+          - pmCounterNumber101
+    measuredEntityDns: []
+  deliveryInfo:
+    topic: "pmreports"
+    bootStrapServers: "onap-strimzi-kafka-bootstrap.onap:9095"
index 0095d98..dc1f2dc 100644 (file)
@@ -1,7 +1,7 @@
 --
 -- ============LICENSE_START=======================================================
 -- Copyright (C) 2024 Ericsson
--- Modifications Copyright (C) 2024-2025 OpenInfra Foundation Europe
+-- Modifications Copyright (C) 2024 OpenInfra Foundation Europe
 -- ================================================================================
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.
@@ -89,6 +89,8 @@ FK_o-ran-smo-teiv-cloud_OCloudNamespace_REL_FK_deployed-on-nodeCluster        FK_143EFC
 FK_o-ran-smo-teiv-equipment_AntennaModule_REL_FK_grouped-by-sector     FK_078764B2F3D613D44CC6E3586F564C83164D2481     CONSTRAINT
 FK_o-ran-smo-teiv-equipment_AntennaModule_REL_FK_installed-at-site     FK_E3BAEF04443354C0FC1837CF7964E05BEF9FD6CC     CONSTRAINT
 FK_o-ran-smo-teiv-oam_ManagedElement_REL_FK_deployed-as-cloudifiedNF   FK_899B8130A861D1450FC49D3159D8B29C0628A717     CONSTRAINT
+FK_o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE_aSide_PhysicalAppliance  FK_0C307FF7FE1210B6696BF0BD533D43BCF20D5CEB     CONSTRAINT
+FK_o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE_bSide_Site       FK_724766DCE4C384828DFFDA92F96D3CF41A10AC60     CONSTRAINT
 FK_o-ran-smo-teiv-ran_NRCellCU_REL_FK_provided-by-ocucpFunction        FK_o-ran-smo-teiv-ran_NRCellCU_REL_FK_provided-by-ocucpFunction CONSTRAINT
 FK_o-ran-smo-teiv-ran_NRCellDU_REL_FK_grouped-by-sector        FK_o-ran-smo-teiv-ran_NRCellDU_REL_FK_grouped-by-sector CONSTRAINT
 FK_o-ran-smo-teiv-ran_NRCellDU_REL_FK_provided-by-oduFunction  FK_o-ran-smo-teiv-ran_NRCellDU_REL_FK_provided-by-oduFunction   CONSTRAINT
@@ -96,10 +98,25 @@ FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_provided-by-oduFunction        FK_9B73B9E2
 FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-antennaCapability    FK_65D538D54EB33081C808540235FEB28823428E64     CONSTRAINT
 FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-by-nrCellDu  FK_o-ran-smo-teiv-ran_NRSectorCarrier_REL_FK_used-by-nrCellDu   CONSTRAINT
 FK_o-ran-smo-teiv-ran_NearRTRICFunction_REL_FK_managed-by-managedElement       FK_32BDE0334EA6AD74ABB3958A2B163F63A3F05203     CONSTRAINT
+FK_o-ran-smo-teiv-ran_NearRTRICFunction_REL_FK_nearRTRICFunction-o1-linked-smo FK_38EF935E0C374C18F1865F231A3EA230FD743A91     CONSTRAINT
 FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_managed-by-managedElement   FK_122DD9709032528D161177B3624AD7AAF6589005     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_ocucpFunction-e2-linked-nearRTRICFunction   FK_92C27CC7666DB694835211BBAB9639C4FECAA639     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_ocucpFunction-e2-linked-ocuupFunction       FK_03B281BB0D7DB0CBC38DA02B76F4C5E8664040F0     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUCPFunction_REL_FK_ocucpFunction-o1-linked-smo FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275     CONSTRAINT
 FK_o-ran-smo-teiv-ran_OCUUPFunction_REL_FK_managed-by-managedElement   FK_8062AF50E5EE5543FBCC68D66FDFF673E31E081D     CONSTRAINT
+FK_o-ran-smo-teiv-ran_OCUUPFunction_REL_FK_ocuupFunction-e2-linked-nearRTRICFunction   FK_E8131DF616156B9C91CA7C5A68AE261FA00A89BA     CONSTRAINT
 FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_managed-by-managedElement     FK_B6F0A4F9024FB47DA39C9A4F1DFFF78330222A80     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-e2-linked-nearRTRICFunction       FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-f1-c-linked-ocucpFunction FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-f1-u-linked-ocuupFunction FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ODUFunction_REL_FK_oduFunction-o1-linked-smo     FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F     CONSTRAINT
 FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_managed-by-managedElement     FK_B497A8C3DC2D647938E6DB4C7E691509DD8C90DE     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-o1-linked-smo     FK_DBE4275001B5740ED355F64F62F181489A4E398A     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhc-linked-oduFunction   FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhm-linked-oduFunction   FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhm-linked-smo   FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhs-linked-oduFunction   FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB     CONSTRAINT
+FK_o-ran-smo-teiv-ran_ORUFunction_REL_FK_oruFunction-ofhu-linked-oduFunction   FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_aSide_NFDeployment       FK_BE847E738902EA979AC709D5A3D0CCD3FD8911CA     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_bSide_NearRTRICFunction  FK_CCC0DEA6E4ABAB8614332070E83D953254D5A3A5     CONSTRAINT
 FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_aSide_NFDeployment   FK_2B4B09AF7CC9C877B1140BB127B4CB4DA438195D     CONSTRAINT
@@ -112,6 +129,14 @@ FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_aSide
 FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_bSide_AntennaCapability     FK_7148BEED02C0617DE1DEEB6639F34A9FA9251B06     CONSTRAINT
 FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_aSide_AntennaModule  FK_1AB1E0CC29DA2E122D43A6616EC60A3F73E68649     CONSTRAINT
 FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_bSide_NRCellDU       FK_8605800A4923C52258A8CE3989E18A7C93D22E8C     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION_aSide_PhysicalAppliance  FK_377503D2B43273E3FC49BB0247CD3AB487BDDDD4     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION_bSide_NearRTRICFunction  FK_D65A8BCA9956E1F8D3F395B69A28E023863656B8     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION_aSide_PhysicalAppliance      FK_24136D3737CD1512DCEF8A40E1755B72EC0A2CD4     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION_bSide_OCUCPFunction  FK_7026E52E2D490BEB55AECB31A1E8EFE10A492AA3     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION_aSide_PhysicalAppliance      FK_E1B88CD983257BA0928134B10E59DD3CC819849A     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION_bSide_OCUUPFunction  FK_609F0EE7138FEC84D27F37B2C9E0C428DD2BFF54     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION_aSide_PhysicalAppliance        FK_77018C1186D1BDFFA579BB0AFF4616B44E5D2869     CONSTRAINT
+FK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION_bSide_ODUFunction      FK_8D4427BBC6A11AB138377367A3854C0B3F8617BA     CONSTRAINT
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_CloudifiedNF_CD_classifiers     IDX_BD96130868B69147B2F87B0D15F5829690DEF454    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_CloudifiedNF_CD_sourceIds       IDX_9EDB5C47201FC82A4565BFED9EF369D6C6529B19    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_CD_classifiers IDX_1BCFD9635C4FA089EDC2E18FFEF56DBF3C5E7A52    INDEX
@@ -145,6 +170,12 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-oam_ManagedElement_CD_classifie
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-oam_ManagedElement_CD_sourceIds       IDX_DDD73D6F4004BF3A96AA118281EE3E565A922B47    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-oam_ManagedElement_REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF IDX_634619CF7333EBC0AFDE990900B79220FC626EBA    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-oam_ManagedElement_REL_CD_sourceIds_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF   IDX_8065626F3F48D4E5A4285654739D3B26499E4C4E    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE_CD_classifiers    IDX_4A8DA56C1989C762E2026427F92B787B11632C30    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE_CD_sourceIds      IDX_9159E48882E10BD6AD511721D591EABE231A0C16    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-physical_PhysicalAppliance_CD_classifiers     IDX_1D52205C41F3233591749A18B5ED604A4A6B5144    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-physical_PhysicalAppliance_CD_sourceIds       IDX_CD60BBA5629EE3D5882EE9907BAB87E9E18BF2A4    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-physical_Site_CD_classifiers  IDX_DCA080CB1439BEFA5461FD03A76033285B9A8EA2    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-physical_Site_CD_sourceIds    IDX_555DE28C10DDDB6CB6AB619D5C71E93068D432FB    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_AntennaCapability_CD_classifiers  IDX_E7FFE8F4A166AA9A382A0659762FFEC313A9EB5C    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_AntennaCapability_CD_sourceIds    IDX_CC3E208A4EE51D3B505416A599F36F3C99F466C8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_AntennaCapability_eUtranFqBands   IDX_5FB80647AE3E5C0443A792618D65B9090EE2A3FC    INDEX
@@ -171,24 +202,56 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_sour
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_CD_classifiers  IDX_8BCCF388DFC8652AD5CD0675C64F49D2D2EDC7A1    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_CD_sourceIds    IDX_E4E40B26C322AF63A662706AF8B0B36E1043B793    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION     IDX_0ECC814A408874C9F8E73EEE3968984A6345A606    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO IDX_F2F838B3DBDF4E0EFC3FC2096F7549740976B346    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION       IDX_B608D8F6B8A79097EA61A1B4777A96CD3D2D1E98    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO   IDX_6B3AF742DAE59FE0E798E67C7E2417783464FD8D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_CD_classifiers      IDX_8D9862DBF6A721FABAEA4204E04B374692C1C5B8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_CD_sourceIds        IDX_84A29F8571860AC5A7BD1A99923485ECB6A3939D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION     IDX_21F2560C8330A795E8AFB54C6D31CDCF6CCD3070    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION       IDX_4D7E42AC9DF388919712322B7C0169A370E56ADF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION   IDX_090E0962B4064F2ECF7C3256325BF2A30BCE85B8    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO IDX_D9ADFBBC5360F5D511E0E67A0D13622A4BBD78E1    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION       IDX_4C6B5CB5CF018656DC8191CE6FE3B9DA2CD0C819    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION IDX_13597F9B767DD22A86305D13FF5B050BFE06B14D    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION     IDX_48341F480087D5BD4C2A19DCA0083184B7178A43    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO   IDX_2F4FCB18A717B38224F5BAA484D2EFE26A458CC7    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_CD_classifiers      IDX_25E4BCFBF8F5344DFC60BCB159FA873FFC8109E9    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_CD_sourceIds        IDX_6C81B2BBFCFE94C87598869A2099E04571202BA7    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION     IDX_3346DFB8C2B7D6EEA12B7C1DE4A84B058C24A657    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION   IDX_5E92F3864ACD360810BD006484337B25B5C64004    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION       IDX_50209F1FF59B49F79FF194887B631994F2B5148A    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION     IDX_7B8C47A1FD2FCA75DED85825317147EE0831A1C7    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_OCUUPFunction_pLMNIdList  IDX_9122DAA7A60DB585BE5ECA68A2EDB9ABF1E7156A    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_CD_classifiers        IDX_5CE9EDE1F25AB2D880A41BC5D297FDBE668182E8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_CD_sourceIds  IDX_73790DA8FF6365B752DC8B399893AC6DE8CF26C4    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION IDX_5DD192861541E0EB2776C6BFE34B327FF27F93C3    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION       IDX_AFD9E48ECC8E81DCD5F3A10199B7936A894D75F1    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION  IDX_F784968DE38F941EB1D9E2845576B5F93ED1E18B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION  IDX_91CC0F89EAA44A400D822FCFDC9AB8AE0285499C    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO     IDX_166E643CA7B58B57DC9CA292E233C033DA771649    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION   IDX_0E5C91A3252FBAFA72DB644D4E949A379F0CB910    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION IDX_5F2DC68F0CE9A176F79C9DEF6752556C38C7A8DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    IDX_4C7915C1CD9395FE91ED0474B1235393063920BA    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    IDX_0C48537C4C2C125C6B188375EC62CBA0984B3D8B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ODUFunction_REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO       IDX_F8F72994228550E6DA79A2E336AFF745CF5B13A8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_CD_classifiers        IDX_2A5AAAD13FDCFF7F2958005C22937366F6604A0D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_CD_sourceIds  IDX_D0D11CFAA917F4FA12748A041A34D2B39A3AD707    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION IDX_DA79A3F946C1F4E8D05B4D6ADEF5E4C65E47635E    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO     IDX_583EAFCC8FB5174AB69184076C2EC75E85F44402    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION   IDX_913D348FC7569F1B3054A7F11583A8E826C44C4D    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION   IDX_10F981F841A1BEAC998725703500D2AAFF92C615    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO   IDX_C5EF805B2EF19761349A03D3CD3CF6C12818C98B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION   IDX_2E9527C8D166D7A31FE2F2B26EEED8202FC33B14    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION   IDX_7B224280C4E1CD6248628CAF23CB06FE50AA838D    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION   IDX_AF235FB2C9CCA99D94CC4038669EDD1BB6C7B2DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO       IDX_C650BB0BAF5EF02FB2A7CBF9D89379DB446443F3    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION     IDX_DEC190D478DCFE7B4974DFE067136180DC4F98D2    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION     IDX_70B09AD99FFFEC82C50E21709F65D759CD306CC2    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO     IDX_8D607F7CBEE96E7D2F0D0E2399E1DF2D4A4D2DE1    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION     IDX_1EF8E086BAB9488EA6AD191B6082977A76CD2BD9    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_ORUFunction_REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION     IDX_544CBFFD146034E3AA9C2EAF6B8770C8CF8740DF    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_SMO_CD_classifiers        IDX_E528335C63DF74D690BADBF0ED2134E2BE5EC147    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_SMO_CD_sourceIds  IDX_F34E4B2CD5D3DEC7271D5FA89AFC34BCF424D636    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_Sector_CD_classifiers     IDX_19C19556F9714850389595E0A16218FA229205FE    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-ran_Sector_CD_sourceIds       IDX_E234B43A7CD7843672F08F2197AB46A2A50BECB0    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_CD_classifiers    IDX_F52FEEDBAF1B04D2D22EBAE051BB5125DF6A6968    INDEX
@@ -203,6 +266,14 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_sourceIds IDX_E896A9EB22A3F9F96CE75A271475316A98B629C8    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_classifiers        IDX_F93AD0AE5C6940EE73D0B661A2E2E5BB10B3772C    INDEX
 IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_sourceIds  IDX_0E1BE8724BEBB21C5AE3986BE150BEC8F8CD903E    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION_CD_classifiers    IDX_0D8159380FCF878593989891969AD9DCF3A75A28    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION_CD_sourceIds      IDX_CF2AE01363E39CE4B5541047403F5354AA36E30E    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION_CD_classifiers        IDX_99049D602D6E4A25F14898B4E7F97479C42D61C4    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION_CD_sourceIds  IDX_48546E24CFF2A489CA783C3D9E91AE5BF267F44E    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION_CD_classifiers        IDX_BD4B6C32900972AA69A3E28241BE923C9A2C4C2B    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION_CD_sourceIds  IDX_A79F66153A0C78659F90CAF80147401312B1D3E6    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION_CD_classifiers  IDX_09295ADACB3D204E56C3917CB88E63FA186055A7    INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION_CD_sourceIds    IDX_24AACA66F5AFB5E40FE93C3638C789D4D2A8F063    INDEX
 IDX_GIN_o-ran-smo-teiv-cloud_CloudifiedNF_CD_decorators        IDX_GIN_o-ran-smo-teiv-cloud_CloudifiedNF_CD_decorators INDEX
 IDX_GIN_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_CD_decorators    IDX_4055A796F223DD01411AFFB5AD97EEEAB6B2320C    INDEX
 IDX_GIN_o-ran-smo-teiv-cloud_NFDeployment_CD_decorators        IDX_GIN_o-ran-smo-teiv-cloud_NFDeployment_CD_decorators INDEX
@@ -219,6 +290,10 @@ IDX_GIN_o-ran-smo-teiv-equipment_AntennaModule_REL_CD_decorators_SECTOR_GROUPS_A
 IDX_GIN_o-ran-smo-teiv-equipment_Site_CD_decorators    IDX_GIN_o-ran-smo-teiv-equipment_Site_CD_decorators     INDEX
 IDX_GIN_o-ran-smo-teiv-oam_ManagedElement_CD_decorators        IDX_GIN_o-ran-smo-teiv-oam_ManagedElement_CD_decorators INDEX
 IDX_GIN_o-ran-smo-teiv-oam_ManagedElement_REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF    IDX_F15A070FC83B2E49223B4232E0BEB8931C2B7A4C    INDEX
+IDX_GIN_o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE_CD_decorators       IDX_4CFE6D1BF80F10055EEF778827B1B769EB9FBFE7    INDEX
+IDX_GIN_o-ran-smo-teiv-physical_PhysicalAppliance_CD_decorators        IDX_GIN_o-ran-smo-teiv-physical_PhysicalAppliance_CD_decorators INDEX
+IDX_GIN_o-ran-smo-teiv-physical_Site_CD_decorators     IDX_GIN_o-ran-smo-teiv-physical_Site_CD_decorators      INDEX
+IDX_GIN_o-ran-smo-teiv-physical_Site_siteLocation      IDX_GIN_o-ran-smo-teiv-physical_Site_siteLocation       INDEX
 IDX_GIN_o-ran-smo-teiv-ran_AntennaCapability_CD_decorators     IDX_GIN_o-ran-smo-teiv-ran_AntennaCapability_CD_decorators      INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NRCellCU_CD_decorators      IDX_GIN_o-ran-smo-teiv-ran_NRCellCU_CD_decorators       INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NRCellCU_REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU  IDX_5D761303176D3B9338784DFBEE0CEC51046ADC30    INDEX
@@ -232,17 +307,33 @@ IDX_GIN_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_decorators_NRSECTORCARRIER_USE
 IDX_GIN_o-ran-smo-teiv-ran_NRSectorCarrier_REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER      IDX_5AB1D780E57D940C42BAD29772E9E2B6C63498A0    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_CD_decorators     IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_CD_decorators      INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION        IDX_B10FD045A6C3E169953CCC38CC2D801FCE15A75F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO    IDX_218EB3FA277F4E7F72EC345841246A5BB3402E28    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_pLMNId    IDX_GIN_o-ran-smo-teiv-ran_NearRTRICFunction_pLMNId     INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_CD_decorators  INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION        IDX_D856E84F300B6711E81931AE1CBC8AD905FA384F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION  IDX_7F7A8AE3E6B3F57A5D1273A1243A79CABA4753C0    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION      IDX_C470E73FA66AEA37FBC2C25AEFB2B959BEA0FBB2    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO    IDX_FC018070572BA39A4683CBDDCAAA16D3A9129DB8    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId        IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators  INDEX
 IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION        IDX_ADD3393C27589066C4993A3491436C6FB57A539F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION      IDX_CEFE5F65D4553C67E4494FCDE9E0E44549171577    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION    IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  IDX_714284D19884BC9E2A594B6B5010D429E12F5AE7    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     IDX_9A1D505BA4542318211ECF2569A0CEA390AAB52D    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     IDX_090DF573B5D8AFDA2478C3B4BA551FEC2CD48585    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_ODUFUNCTION_O1LINK_SMO        IDX_0A7B8671FF4C6943209D81A0351DE1CAEFB55629    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId        IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION    IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_O1LINK_SMO        IDX_DE327F0FC00996B5856EE87C424E2E70C39475CA    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION      IDX_2C350ECD1561367CFE3C6ECE240110B0CFBE691E    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION      IDX_091099E01E22A69CF5FBD13F6BE31A590A12DFEB    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO      IDX_0F1592A3DE78629D65D3FED257905832BF2C42EA    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION      IDX_21586E874FC18901720393534E189FB50B0825AC    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION      IDX_F3DE945424D3435D889B06D0080CFC8C26F76CF2    INDEX
+IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators   IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators    INDEX
 IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators        IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators INDEX
 IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_CD_decorators       IDX_D333FA5882890B7CD3599712FFFB2641B9E04C80    INDEX
 IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_CD_decorators   IDX_0867A1E865A904F4BB513948DAEB60412BE67DF3    INDEX
@@ -250,6 +341,10 @@ IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION_CD_decora
 IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_CD_decorators     IDX_5BAC6D2F05A63FDE27F082E8C8F4D766C145E835    INDEX
 IDX_GIN_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_decorators  IDX_7BF09D0227840279556AD27ACECB068705893D28    INDEX
 IDX_GIN_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_decorators   IDX_319FDFF6C9E6BC1D922F0A2AFEAAC294E520F753    INDEX
+IDX_GIN_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION_CD_decorators       IDX_1FAB22E8654FEFF5EAC13C58CEA0CCADEBECD4FF    INDEX
+IDX_GIN_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION_CD_decorators   IDX_D11AD33EEC5B056675B950E3A1982AF2CD56EDEC    INDEX
+IDX_GIN_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION_CD_decorators   IDX_392C4E8EFF5A261C6FC2EADBCD2566B1BDD9484D    INDEX
+IDX_GIN_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION_CD_decorators     IDX_CBF202818AE6FB3A69C44CC7572BD63D284B1AF6    INDEX
 PK_o-ran-smo-teiv-cloud_CloudifiedNF_id        PK_o-ran-smo-teiv-cloud_CloudifiedNF_id CONSTRAINT
 PK_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_id    PK_E4FDDE2DC433209F933C7F53C9F72C1D2EB04BC6     CONSTRAINT
 PK_o-ran-smo-teiv-cloud_NFDeployment_id        PK_o-ran-smo-teiv-cloud_NFDeployment_id CONSTRAINT
@@ -260,6 +355,9 @@ PK_o-ran-smo-teiv-cloud_OCloudSite_id       PK_o-ran-smo-teiv-cloud_OCloudSite_id   CONS
 PK_o-ran-smo-teiv-equipment_AntennaModule_id   PK_o-ran-smo-teiv-equipment_AntennaModule_id    CONSTRAINT
 PK_o-ran-smo-teiv-equipment_Site_id    PK_o-ran-smo-teiv-equipment_Site_id     CONSTRAINT
 PK_o-ran-smo-teiv-oam_ManagedElement_id        PK_o-ran-smo-teiv-oam_ManagedElement_id CONSTRAINT
+PK_o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE_id       PK_38CC59EE4BB930940AA47257E64BA5E4BBFEF260     CONSTRAINT
+PK_o-ran-smo-teiv-physical_PhysicalAppliance_id        PK_o-ran-smo-teiv-physical_PhysicalAppliance_id CONSTRAINT
+PK_o-ran-smo-teiv-physical_Site_id     PK_o-ran-smo-teiv-physical_Site_id      CONSTRAINT
 PK_o-ran-smo-teiv-ran_AntennaCapability_id     PK_o-ran-smo-teiv-ran_AntennaCapability_id      CONSTRAINT
 PK_o-ran-smo-teiv-ran_NRCellCU_id      PK_o-ran-smo-teiv-ran_NRCellCU_id       CONSTRAINT
 PK_o-ran-smo-teiv-ran_NRCellDU_id      PK_o-ran-smo-teiv-ran_NRCellDU_id       CONSTRAINT
@@ -269,6 +367,7 @@ PK_o-ran-smo-teiv-ran_OCUCPFunction_id      PK_o-ran-smo-teiv-ran_OCUCPFunction_id  CO
 PK_o-ran-smo-teiv-ran_OCUUPFunction_id PK_o-ran-smo-teiv-ran_OCUUPFunction_id  CONSTRAINT
 PK_o-ran-smo-teiv-ran_ODUFunction_id   PK_o-ran-smo-teiv-ran_ODUFunction_id    CONSTRAINT
 PK_o-ran-smo-teiv-ran_ORUFunction_id   PK_o-ran-smo-teiv-ran_ORUFunction_id    CONSTRAINT
+PK_o-ran-smo-teiv-ran_SMO_id   PK_o-ran-smo-teiv-ran_SMO_id    CONSTRAINT
 PK_o-ran-smo-teiv-ran_Sector_id        PK_o-ran-smo-teiv-ran_Sector_id CONSTRAINT
 PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION_id       PK_82A1C5618438FF6DF7CDD48FD71E0A584E6D052A     CONSTRAINT
 PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_id   PK_2D854968CB74C42C534D8E7C2A53E93F6B7F001F     CONSTRAINT
@@ -276,6 +375,10 @@ PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION_id       PK_E551D02D
 PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_id     PK_A10CB552A0F126991DD325EC84DBFAC6F2BBE1A3     CONSTRAINT
 PK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_id  PK_63E61CB6802F21FE7A04A80A095F6AF8ABF067CE     CONSTRAINT
 PK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_id   PK_F41873285F3BD831F63C6041B4356A063403406D     CONSTRAINT
+PK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION_id       PK_6E80C7AFF8B1C6C89ECCA6A855DC3B31066318AD     CONSTRAINT
+PK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION_id   PK_84398955EE4737F32AB94B09BB68E6F48ECE707E     CONSTRAINT
+PK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION_id   PK_0D7B04E5B3AD0DB04FBD8FC00598BEEE04BD3E75     CONSTRAINT
+PK_o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION_id     PK_6C410FD0F9E98168BA2B4F63C967F3C10E8F8AC9     CONSTRAINT
 REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE     REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE      COLUMN
 REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT  COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF     REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF      COLUMN
@@ -284,13 +387,28 @@ REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION   REL_CD_classifiers_MANAG
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION        REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION  REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION   COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION  REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION   COLUMN
+REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO        REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO COLUMN
 REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT  REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT   COLUMN
 REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER       REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER        COLUMN
 REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY      REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY       COLUMN
 REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER     REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER      COLUMN
+REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION  REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION   COLUMN
+REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO    REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO     COLUMN
 REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU     REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU      COLUMN
+REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION   REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    COLUMN
+REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION   REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    COLUMN
+REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO      REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO       COLUMN
 REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU       REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU        COLUMN
 REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER        REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
+REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO      REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO       COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO    REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION     COLUMN
+REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION    REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION     COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE  COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU      REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU       COLUMN
 REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE      REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE       COLUMN
@@ -301,13 +419,28 @@ REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION    REL_CD_decorators_MANAGED
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION  COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION   REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION    COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION   REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION    COLUMN
+REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO  COLUMN
 REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT   REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT    COLUMN
 REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER        REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER COLUMN
 REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY       REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY        COLUMN
 REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER      REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER       COLUMN
+REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION   REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION    COLUMN
+REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION       REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION        COLUMN
+REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO     REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO      COLUMN
 REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU      REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU       COLUMN
+REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION       REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION        COLUMN
+REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  COLUMN
+REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION    REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     COLUMN
+REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION    REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     COLUMN
+REL_CD_decorators_ODUFUNCTION_O1LINK_SMO       REL_CD_decorators_ODUFUNCTION_O1LINK_SMO        COLUMN
 REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU        REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU COLUMN
 REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  COLUMN
+REL_CD_decorators_ORUFUNCTION_O1LINK_SMO       REL_CD_decorators_ORUFUNCTION_O1LINK_SMO        COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO     REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION      COLUMN
+REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION     REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION      COLUMN
 REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE  REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE   COLUMN
 REL_CD_decorators_SECTOR_GROUPS_NRCELLDU       REL_CD_decorators_SECTOR_GROUPS_NRCELLDU        COLUMN
 REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE       REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE        COLUMN
@@ -318,13 +451,28 @@ REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION     REL_CD_sourceIds_MANAGEDEL
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION  REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION   COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION    REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION     COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION    REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION     COLUMN
+REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO  REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO   COLUMN
 REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT    REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT     COLUMN
 REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER  COLUMN
 REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY        REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY COLUMN
 REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER       REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        COLUMN
+REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION    REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION     COLUMN
+REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO      REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO       COLUMN
 REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU       REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU        COLUMN
+REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION        REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION COLUMN
+REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION     REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION      COLUMN
+REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION     REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION      COLUMN
+REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO        REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO COLUMN
 REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU  COLUMN
 REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER   COLUMN
+REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO        REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO      REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION       COLUMN
+REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION      REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION       COLUMN
 REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE   REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE    COLUMN
 REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU        REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU COLUMN
 REL_FK_comprised-by-cloudifiedNF       REL_FK_comprised-by-cloudifiedNF        COLUMN
@@ -333,6 +481,21 @@ REL_FK_deployed-on-nodeCluster     REL_FK_deployed-on-nodeCluster  COLUMN
 REL_FK_grouped-by-sector       REL_FK_grouped-by-sector        COLUMN
 REL_FK_installed-at-site       REL_FK_installed-at-site        COLUMN
 REL_FK_managed-by-managedElement       REL_FK_managed-by-managedElement        COLUMN
+REL_FK_nearRTRICFunction-o1-linked-smo REL_FK_nearRTRICFunction-o1-linked-smo  COLUMN
+REL_FK_ocucpFunction-e2-linked-nearRTRICFunction       REL_FK_ocucpFunction-e2-linked-nearRTRICFunction        COLUMN
+REL_FK_ocucpFunction-e2-linked-ocuupFunction   REL_FK_ocucpFunction-e2-linked-ocuupFunction    COLUMN
+REL_FK_ocucpFunction-o1-linked-smo     REL_FK_ocucpFunction-o1-linked-smo      COLUMN
+REL_FK_ocuupFunction-e2-linked-nearRTRICFunction       REL_FK_ocuupFunction-e2-linked-nearRTRICFunction        COLUMN
+REL_FK_oduFunction-e2-linked-nearRTRICFunction REL_FK_oduFunction-e2-linked-nearRTRICFunction  COLUMN
+REL_FK_oduFunction-f1-c-linked-ocucpFunction   REL_FK_oduFunction-f1-c-linked-ocucpFunction    COLUMN
+REL_FK_oduFunction-f1-u-linked-ocuupFunction   REL_FK_oduFunction-f1-u-linked-ocuupFunction    COLUMN
+REL_FK_oduFunction-o1-linked-smo       REL_FK_oduFunction-o1-linked-smo        COLUMN
+REL_FK_oruFunction-o1-linked-smo       REL_FK_oruFunction-o1-linked-smo        COLUMN
+REL_FK_oruFunction-ofhc-linked-oduFunction     REL_FK_oruFunction-ofhc-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhm-linked-oduFunction     REL_FK_oruFunction-ofhm-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhm-linked-smo     REL_FK_oruFunction-ofhm-linked-smo      COLUMN
+REL_FK_oruFunction-ofhs-linked-oduFunction     REL_FK_oruFunction-ofhs-linked-oduFunction      COLUMN
+REL_FK_oruFunction-ofhu-linked-oduFunction     REL_FK_oruFunction-ofhu-linked-oduFunction      COLUMN
 REL_FK_provided-by-ocucpFunction       REL_FK_provided-by-ocucpFunction        COLUMN
 REL_FK_provided-by-oduFunction REL_FK_provided-by-oduFunction  COLUMN
 REL_FK_serviced-managedElement REL_FK_serviced-managedElement  COLUMN
@@ -346,13 +509,28 @@ REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION       REL_ID_MANAGEDELEMENT_MANAGES_OCUCPF
 REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION    REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION     COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION      REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION       COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION      REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION       COLUMN
+REL_ID_NEARRTRICFUNCTION_O1LINK_SMO    REL_ID_NEARRTRICFUNCTION_O1LINK_SMO     COLUMN
 REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT      REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT       COLUMN
 REL_ID_NRCELLDU_USES_NRSECTORCARRIER   REL_ID_NRCELLDU_USES_NRSECTORCARRIER    COLUMN
 REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY  REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY   COLUMN
 REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER  COLUMN
+REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION      REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION       COLUMN
+REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_ID_OCUCPFUNCTION_O1LINK_SMO        REL_ID_OCUCPFUNCTION_O1LINK_SMO COLUMN
 REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU  COLUMN
+REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION  REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION   COLUMN
+REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION       REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION        COLUMN
+REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION       REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION        COLUMN
+REL_ID_ODUFUNCTION_O1LINK_SMO  REL_ID_ODUFUNCTION_O1LINK_SMO   COLUMN
 REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU   REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU    COLUMN
 REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER    REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER     COLUMN
+REL_ID_ORUFUNCTION_O1LINK_SMO  REL_ID_ORUFUNCTION_O1LINK_SMO   COLUMN
+REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHMLINK_SMO        REL_ID_ORUFUNCTION_OFHMLINK_SMO COLUMN
+REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION COLUMN
+REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION        REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION COLUMN
 REL_ID_SECTOR_GROUPS_ANTENNAMODULE     REL_ID_SECTOR_GROUPS_ANTENNAMODULE      COLUMN
 REL_ID_SECTOR_GROUPS_NRCELLDU  REL_ID_SECTOR_GROUPS_NRCELLDU   COLUMN
 REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE   REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE    COLUMN
@@ -363,13 +541,28 @@ REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION REL_metadata_MANAGEDELEMENT_MA
 REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION      REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION       COLUMN
 REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION        REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION COLUMN
 REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION        REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION COLUMN
+REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO      REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO       COLUMN
 REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT        REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT COLUMN
 REL_metadata_NRCELLDU_USES_NRSECTORCARRIER     REL_metadata_NRCELLDU_USES_NRSECTORCARRIER      COLUMN
 REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY    REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY     COLUMN
 REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER   REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER    COLUMN
+REL_metadata_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION        REL_metadata_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION COLUMN
+REL_metadata_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_metadata_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_metadata_OCUCPFUNCTION_O1LINK_SMO  REL_metadata_OCUCPFUNCTION_O1LINK_SMO   COLUMN
 REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU   REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU    COLUMN
+REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION    REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION     COLUMN
+REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION      REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION       COLUMN
+REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION  COLUMN
+REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION  COLUMN
+REL_metadata_ODUFUNCTION_O1LINK_SMO    REL_metadata_ODUFUNCTION_O1LINK_SMO     COLUMN
 REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU     REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU      COLUMN
 REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER      REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER       COLUMN
+REL_metadata_ORUFUNCTION_O1LINK_SMO    REL_metadata_ORUFUNCTION_O1LINK_SMO     COLUMN
+REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHMLINK_SMO  REL_metadata_ORUFUNCTION_OFHMLINK_SMO   COLUMN
+REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION   COLUMN
+REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION  REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION   COLUMN
 REL_metadata_SECTOR_GROUPS_ANTENNAMODULE       REL_metadata_SECTOR_GROUPS_ANTENNAMODULE        COLUMN
 REL_metadata_SECTOR_GROUPS_NRCELLDU    REL_metadata_SECTOR_GROUPS_NRCELLDU     COLUMN
 UNIQUE_o-ran-smo-teiv-cloud_NFDeployment_REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT    UNIQUE_A5A8418B6BE911F281E6E2AA640D7D9F777471DC CONSTRAINT
@@ -385,13 +578,29 @@ UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER    U
 UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY        UNIQUE_A799EC9DA6624651081E1DA21B5F0C2D38F6A192 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_NRSectorCarrier_REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER  UNIQUE_D5D35955594A6EB48640425529F7DE44BED00B62 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_NearRTRICFunction_REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION    UNIQUE_E020461673334EB824643649B6B31670FB064EC8 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_NearRTRICFunction_REL_ID_NEARRTRICFUNCTION_O1LINK_SMO        UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0 CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION    UNIQUE_2B7D3D49C1072E660047DE56843413CE628BF94A CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION      UNIQUE_FB6281E267F316F3D288BFEF96319FFD5FF2E9CF CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION  UNIQUE_636E8949BC041514E4F592F7B65FC701773C6067 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUCPFunction_REL_ID_OCUCPFUNCTION_O1LINK_SMO        UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_OCUUPFunction_REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION    UNIQUE_DF85FE7809B5527CB4A6028DD1A599DBBD5AF214 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_OCUUPFunction_REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION  UNIQUE_90EB740B5632402F115555B7387BC0A218B9A19F CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION        UNIQUE_D570291C9E28A2AF73387B7A8B0F4C70130EEDB4 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION      UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ODUFunction_REL_ID_ODUFUNCTION_O1LINK_SMO    UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E CONSTRAINT
 UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION        UNIQUE_4E6F008B82605A806EED04B2315A1FEE095A9241 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_O1LINK_SMO    UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION  UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION  UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHMLINK_SMO  UNIQUE_9967840981340189977B88AA138C3773F21122C7 CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION  UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A CONSTRAINT
+UNIQUE_o-ran-smo-teiv-ran_ORUFunction_REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION  UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D CONSTRAINT
 aSide_AntennaModule    aSide_AntennaModule     COLUMN
 aSide_NFDeployment     aSide_NFDeployment      COLUMN
 aSide_NodeCluster      aSide_NodeCluster       COLUMN
+aSide_PhysicalAppliance        aSide_PhysicalAppliance COLUMN
 antennaBeamWidth       antennaBeamWidth        COLUMN
 antennaModelNumber     antennaModelNumber      COLUMN
 arfcnDL        arfcnDL COLUMN
@@ -406,6 +615,7 @@ bSide_OCUUPFunction bSide_OCUUPFunction     COLUMN
 bSide_OCloudNamespace  bSide_OCloudNamespace   COLUMN
 bSide_OCloudSite       bSide_OCloudSite        COLUMN
 bSide_ODUFunction      bSide_ODUFunction       COLUMN
+bSide_Site     bSide_Site      COLUMN
 cellLocalId    cellLocalId     COLUMN
 dUpLMNId       dUpLMNId        COLUMN
 eUtranFqBands  eUtranFqBands   COLUMN
@@ -423,6 +633,7 @@ id  id      COLUMN
 mechanicalAntennaBearing       mechanicalAntennaBearing        COLUMN
 mechanicalAntennaTilt  mechanicalAntennaTilt   COLUMN
 metadata       metadata        COLUMN
+modelName      modelName       COLUMN
 nCI    nCI     COLUMN
 nRFqBands      nRFqBands       COLUMN
 nRPCI  nRPCI   COLUMN
@@ -439,6 +650,9 @@ o-ran-smo-teiv-cloud_OCloudSite     o-ran-smo-teiv-cloud_OCloudSite TABLE
 o-ran-smo-teiv-equipment_AntennaModule o-ran-smo-teiv-equipment_AntennaModule  TABLE
 o-ran-smo-teiv-equipment_Site  o-ran-smo-teiv-equipment_Site   TABLE
 o-ran-smo-teiv-oam_ManagedElement      o-ran-smo-teiv-oam_ManagedElement       TABLE
+o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE     o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE      TABLE
+o-ran-smo-teiv-physical_PhysicalAppliance      o-ran-smo-teiv-physical_PhysicalAppliance       TABLE
+o-ran-smo-teiv-physical_Site   o-ran-smo-teiv-physical_Site    TABLE
 o-ran-smo-teiv-ran_AntennaCapability   o-ran-smo-teiv-ran_AntennaCapability    TABLE
 o-ran-smo-teiv-ran_NRCellCU    o-ran-smo-teiv-ran_NRCellCU     TABLE
 o-ran-smo-teiv-ran_NRCellDU    o-ran-smo-teiv-ran_NRCellDU     TABLE
@@ -448,6 +662,7 @@ o-ran-smo-teiv-ran_OCUCPFunction    o-ran-smo-teiv-ran_OCUCPFunction        TABLE
 o-ran-smo-teiv-ran_OCUUPFunction       o-ran-smo-teiv-ran_OCUUPFunction        TABLE
 o-ran-smo-teiv-ran_ODUFunction o-ran-smo-teiv-ran_ODUFunction  TABLE
 o-ran-smo-teiv-ran_ORUFunction o-ran-smo-teiv-ran_ORUFunction  TABLE
+o-ran-smo-teiv-ran_SMO o-ran-smo-teiv-ran_SMO  TABLE
 o-ran-smo-teiv-ran_Sector      o-ran-smo-teiv-ran_Sector       TABLE
 o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION     3C2E2CE7BDF8321BC824B6318B190690F58DBB82        TABLE
 o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION  TABLE
@@ -455,32 +670,42 @@ o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION    o-ran-smo-teiv-re
 o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION   o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION    TABLE
 o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY        CFC235E0404703D1E4454647DF8AAE2C193DB402        TABLE
 o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU  TABLE
+o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION     D4A45C271462B28FB655CFCF2F2D826236C78062        TABLE
+o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA        TABLE
+o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION B83D20388E54C581319034D29C555DE6F8D938FF        TABLE
+o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION   5A1D611A68E4A8B2F007A89876701DB3FA88346E        TABLE
 oruId  oruId   COLUMN
 pLMNId pLMNId  COLUMN
 pLMNIdList     pLMNIdList      COLUMN
 plmnId plmnId  COLUMN
 positionWithinSector   positionWithinSector    COLUMN
 sectorId       sectorId        COLUMN
+siteLocation   siteLocation    COLUMN
+siteName       siteName        COLUMN
+smoName        smoName COLUMN
 totalTilt      totalTilt       COLUMN
+vendorName     vendorName      COLUMN
 verticalBeamWidth      verticalBeamWidth       COLUMN
 \.
 
 COPY teiv_model.module_reference("name", "namespace", "domain", "includedModules", "revision", "content") FROM stdin;
-_3gpp-common-yang-extensions   urn:3gpp:sa5:_3gpp-common-yang-extensions       \N      []      2019-06-23      bW9kdWxlIF8zZ3BwLWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewogIHlhbmctdmVyc2lvbiAxLjE7CiAgbmFtZXNwYWNlIHVybjozZ3BwOnNhNTpfM2dwcC1jb21tb24teWFuZy1leHRlbnNpb25zIDsKICBwcmVmaXggeWV4dDNncHAgOwoKICBvcmdhbml6YXRpb24gIjNHUFAgU0E1IjsKICBkZXNjcmlwdGlvbiAiVGhlIG1vZHVsZSBkZWZpbmVzIFlBTkcgZXh0ZW5zaW9ucyBuZWVkZWQgCiAgICAzR1BQIFlBTkcgbW9kZWxpbmcuCgogICAgQ29weXJpZ2h0IChjKSAyMDE5IDNHUFAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgRXh0ZW5zaW9ucyBNVVNUIGJlIGRlZmluZWQgd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpbiB0aGUKICAgIGRlc2NyaXB0aW9uIHN0YXRlbWVudDoKICAgICAgICAtIFdoYXQgaXMgdGhpcyBzdGF0ZW1lbnQuCiAgICAgICAgLSBOZXdsaW5lLAogICAgICAgIC0gVGhpcyBzdGF0ZW1lbnQgY2FuIGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZSB4eHggc3RhdGVtZW50cyB3aXRoCiAgICAgICAgY2FyZGluYWxpdHkgeC4ueS4KICAgICAgICAtIFRoaXMgc3RhdGVtZW50IGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgc3Vic3RhdGVtZW50cyB3aXRoCiAgICAgICAgY2FyZGluYWxpdHkgeC4ueS4KICAgICAgICAtIE5ld2xpbmUKICAgICAgICAtIElzIGNoYW5naW5nIHRoaXMgc3RhdGVtZW50IGFuIGVkaXRvcmlhbCwgQkMoYmFja3dhcmRzIGNvbXBhdGlibGUpIAogICAgICAgIG9yIE5CQyhub24tQkMpIGNoYW5nZT8KICAgICAgICAtIE5ld2xpbmUuCiAgICAgICAgLSBUaGUgYXJndW1lbnQgaXRzIG1lYW5pbmcgYW5kIHR5cGUuIFByZWZlcmFibHkgdXNlIFlBTkcgdHlwZXMgYW5kCiAgICAgICAgICBjb25zdHJhaW50cyB0byBkZWZpbmUgdGhlIGFyZ3VtZW50J3MgdHlwZS4KCiAgICBBbnkgZXh0ZW5zaW9uIHN0YXRlbWVudCBjYW4gYmUgYWRkZWQgd2l0aCBhCiAgICBkZXZpYXRpb24vZGV2aWF0ZSBhZGQgc3RhdGVtZW50LiBJbiB0aGlzIGNhc2UgdGhlIHJlc3RyaWN0aW9uIGFib3V0CiAgICB0aGUgcGFyZW50IHN0YXRlbWVudCBvZiB0aGUgZXh0ZW5zaW9uIFNIQUxMIGJlIGV2YWx1YXRlZCBiYXNlZCBvbiB0aGUKICAgIHRhcmdldCBvZiB0aGUgZGV2aWF0aW9uIHN0YXRlbWVudC4KCiAgICBTdXBwb3J0IGZvciB0aGlzIG1vZHVsZSBkb2VzIG5vdCBtZWFuIHRoYXQgYSBZQU5HIHNlcnZlciBpbXBsZW1lbnRzCiAgICBzdXBwb3J0IGZvciBlYWNoIG9mIHRoZXNlIGV4dGVuc2lvbnMuCiAgICBJbXBsZW1lbnRlcnMgb2YgZWFjaCBzcGVjaWZpYyBtb2R1bGUgdXNpbmcgYW4gZXh0ZW5zaW9ucyBNVVNUIGNoZWNrCiAgICBpZiB0aGUgc2VydmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIHVzZWQgZXh0ZW5zaW9uLgogICAgTm90ZTogbW9kdWxlcyB1c2UgbWFueSBleHRlbnNpb25zIHdoaWNoIGluZGl2aWR1YWwKICAgIGltcGxlbWVudGF0aW9ucyBNQVkgb3IgTUFZIE5PVCBzdXBwb3J0LgogICAgSWYgc3VwcG9ydCBmb3IgYW4gZXh0ZW5zaW9uIGlzIG1pc3NpbmcgdGhlIGV4dGVuc2lvbiBzdGF0ZW1lbnQgbmVlZHMKICAgIGluZGl2aWR1YWwgaGFuZGxpbmcgb3IgaXQgU0hPVUxEIGJlIHJlbW92ZWQgZnJvbSB0aGUgbW9kdWxlIHVzaW5nCiAgICB0aGUgZXh0ZW5zaW9uIGUuZy4gd2l0aCBhIGRldmlhdGlvbi4KICAgICAgICAgICI7CgogIHJldmlzaW9uICIyMDE5LTA2LTIzIiB7CiAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCB2ZXJzaW9uIjsKICB9CgogIGV4dGVuc2lvbiBpblZhcmlhbnQgewogICAgZGVzY3JpcHRpb24KICAgICAgIkluZGljYXRlcyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlIGRhdGEgbm9kZSBjYW4gb25seSBiZSBzZXQgd2hlbiBpdHMKICAgICAgcGFyZW50IGRhdGEgbm9kZSBpcyBiZWluZyBjcmVhdGVkLiBUbyBjaGFuZ2UgdGhlIHZhbHVlIGFmdGVyIHRoYXQsIHRoZQogICAgICBwYXJlbnQgZGF0YSBub2RlIG11c3QgYmUgZGVsZXRlZCBhbmQgcmVjcmVhdGVkIHdpdGggdGhlIGRhdGEgbm9kZQogICAgICBoYXZpbmcgdGhlIG5ldyB2YWx1ZS4KCiAgICAgIEl0IGlzIHVubmVjZXNzYXJ5IHRvIHVzZSBhbmQgTVVTVCBOT1QgYmUgdXNlZCBmb3Iga2V5IGxlYWZzLgoKICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgYSBsZWFmLCBsZWFmLWxpc3QsIGxpc3QgCiAgICAgIHN0YXRlbWVudHMgdGhhdCBpcyBjb25maWc9dHJ1ZS4KICAgICAgWmVybyBvciBvbmUgaW5WYXJpYW50IHN0YXRlbWVudCBpcyBhbGxvd2VkIHBlciBwYXJlbnQgc3RhdGVtZW50LgogICAgICBOTyBzdWJzdGF0ZW1lbnRzIGFyZSBhbGxvd2VkLgogICAgICAgICAgICAKICAgICAgQWRkaW5nIHRoaXMgc3RhdGVtZW50IGlzIGFuIE5CQyBjaGFuZ2UsIHJlbW92aW5nIGl0IGlzIEJDLiI7CiAgfQoKICBleHRlbnNpb24gaW5pdGlhbC12YWx1ZSB7CiAgICBkZXNjcmlwdGlvbiAiU3BlY2lmaWVzIGEgdmFsdWUgdGhhdCB0aGUgc3lzdGVtIHdpbGwgc2V0IGZvciBhIGxlYWYKICAgICAgbGVhZi1saXN0IGlmIGEgdmFsdWUgaXMgbm90IHNwZWNpZmllZCBmb3IgaXQgd2hlbiBpdHMgcGFyZW50IGxpc3QKICAgICAgb3IgY29udGFpbmVyIGlzIGNyZWF0ZWQuIFRoZSB2YWx1ZSBoYXMgbm8gZWZmZWN0IGluIGFueSBvdGhlcgogICAgICBtb2RpZmljYXRpb24gZS5nLiBjaGFuZ2luZyBvciByZW1vdmluZyB0aGUgdmFsdWUuCgogICAgICBUaGUgZGVzY3JpcHRpb24gc3RhdGVtZW50IG9mIHRoZSBwYXJlbnQgc3RhdGVtZW50IFNIT1VMRCBjb250YWluCiAgICAgIHRoZSBsYWJlbCAnSW5pdGlhbC12YWx1ZTogJyBmb2xsb3dlZCBieSB0aGUgdGV4dCBmcm9tIHRoZSBhcmd1bWVudC4KCiAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgbGVhZiBvciBsZWFmLWxpc3QuCiAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBOT1QgYmUgcHJlc2VudCBpZiB0aGUgbGVhZiBvciB0aGUgbGVhZi1saXN0IAogICAgICBoYXMgYSBkZWZhdWx0IHN0YXRlbWVudCBvciB0aGUgdHlwZSB1c2VkIGZvciB0aGUgZGF0YSBub2RlIAogICAgICBoYXMgYSBkZWZhdWx0IHZhbHVlLgogICAgICBUaGUgc3RhdGVtZW50IE1VU1QgTk9UIGJlIHVzZWQgZm9yIGNvbmZpZz1mYWxzZSBkYXRhIG9yIGluIGFuIAogICAgICBhY3Rpb24sIHJwYyBvciBub3RpZmljYXRpb24uCiAgICAgIFplcm8gb3Igb25lIGluaXRpYWwtdmFsdWUgc3RhdGVtZW50cyBhcmUgYWxsb3dlZCBmb3IgYSBsZWFmIHBhcmVudAogICAgICBzdGF0ZW1lbnQuIFplcm8gb3IgbW9yZSBpbml0aWFsLXZhbHVlIHN0YXRlbWVudHMgYXJlIGFsbG93ZWQgZm9yIGEKICAgICAgbGVhZi1saXN0IHBhcmVudCBzdGF0ZW1lbnQuIElmIHRoZSBsZWFmLWxpc3QgaXMgb3JkZXJlZC1ieSB1c2VyLCB0aGUKICAgICAgaW5pdGlhbCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIFlBTkcgZGVmaW5pdGlvbi4KICAgICAgTk8gc3Vic3RhdGVtZW50cyBhcmUgYWxsb3dlZC4KCiAgICAgIEFsd2F5cyBjb25zaWRlciB1c2luZyBhIFlBTkctZGVmYXVsdCBzdGF0ZW1lbnQgaW5zdGVhZC4KCiAgICAgIE1vZGlmaWNhdGlvbiBvZiB0aGUgaW5pdGlhbC12YWx1ZSBpcyBhIG5vbi1iYWNrd2FyZHMtY29tcGF0aWJsZSBjaGFuZ2UuCgogICAgICBUaGUgYXJndW1lbnQgc3BlY2lmaWVzIGEgc2luZ2xlIGluaXRpYWwgdmFsdWUgZm9yIGEgbGVhZiBvciBsZWFmLWxpc3QuCiAgICAgIFRoZSB2YWx1ZSBNVVNUIGJlIHBhcnQgb2YgdGhlIHZhbHVlc3BhY2Ugb2YgdGhlIGxlYWYvbGVhZi1saXN0LgogICAgICBJdCBmb2xsb3dzIHRoZSBzYW1lIHJ1bGVzIGFzIHRoZSBhcmd1bWVudCBvZiB0aGUgZGVmYXVsdCBzdGF0ZW1lbnQuIjsKCiAgICBhcmd1bWVudCAiaW5pdGlhbC12YWx1ZSI7CiAgfQp9
-_3gpp-common-yang-types        urn:3gpp:sa5:_3gpp-common-yang-types    \N      []      2022-07-26      bW9kdWxlIF8zZ3BwLWNvbW1vbi15YW5nLXR5cGVzIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOjNncHA6c2E1Ol8zZ3BwLWNvbW1vbi15YW5nLXR5cGVzIjsKICBwcmVmaXggInR5cGVzM2dwcCI7CiAgCiAgaW1wb3J0IGlldGYtaW5ldC10eXBlcyB7IHByZWZpeCBpbmV0OyB9CiAgaW1wb3J0IGlldGYteWFuZy10eXBlcyB7IHByZWZpeCB5YW5nOyB9CgogIG9yZ2FuaXphdGlvbiAiM0dQUCBTQTUiOwogIGNvbnRhY3QgImh0dHBzOi8vd3d3LjNncHAub3JnL0R5bmFSZXBvcnQvVFNHLVdHLS1TNS0tb2ZmaWNpYWxzLmh0bT9JdGVtaWQ9NDY0IjsKICBkZXNjcmlwdGlvbiAiVGhlIG1vZGVsIGRlZmluZXMgYSBZQU5HIG1hcHBpbmcgb2YgdGhlIHRvcCBsZXZlbCAKICAgIGluZm9ybWF0aW9uIGNsYXNzZXMgdXNlZCBmb3IgbWFuYWdlbWVudCBvZiA1RyBuZXR3b3JrcyBhbmQgCiAgICBuZXR3b3JrIHNsaWNpbmcuIjsKICByZWZlcmVuY2UgIjNHUFAgVFMgMjguNjIzIjsKCiAgcmV2aXNpb24gMjAyMi0wNy0yNiB7IHJlZmVyZW5jZSBDUi0wMTgwIDsgfQogIHJldmlzaW9uIDIwMjItMDItMDkgeyByZWZlcmVuY2UgIkNSLTAxNDQiOyB9CiAgcmV2aXNpb24gMjAyMS0xMS0wMSB7IHJlZmVyZW5jZSAiQ1ItMDE0MSI7IH0KICAKICByZXZpc2lvbiAyMDIxLTA5LTMwIHsKICAgIGRlc2NyaXB0aW9uICJBZGRlZCBMb25naXR1ZGUsIExhdGl0dWRlLCBUZW50aE9mRGVncmVlcywgT25PZmYuIjsKICAgIHJlZmVyZW5jZSAiQ1ItMDEzOCI7CiAgfQoKICByZXZpc2lvbiAyMDIwLTExLTA2IHsKICAgIGRlc2NyaXB0aW9uICJSZW1vdmVkIGluY29ycmVjdCBTLU5TU0FJIGRlZmluaXRpb25zLiI7CiAgICByZWZlcmVuY2UgIkNSLTAxMTgiOwogIH0KCiAgcmV2aXNpb24gMjAyMC0wMy0xMCB7CiAgICBkZXNjcmlwdGlvbiAiUmVtb3ZlZCBmYXVsdHkgd2hlbiBzdGF0ZW1lbnRzLiI7CiAgICByZWZlcmVuY2UgIlNQLTIwMDIyOSI7CiAgfQogCiAgcmV2aXNpb24gMjAxOS0xMC0yNSB7CiAgICBkZXNjcmlwdGlvbiAiQWRkZWQgTWFuYWdlZE5GUHJvZmlsZS4iOwogICAgcmVmZXJlbmNlICJTNS0xOTQ0NTciOwogIH0KCiAgcmV2aXNpb24gMjAxOS0xMC0xNiB7CiAgICBkZXNjcmlwdGlvbiAiQWRkZWQgU0FQIGFuZCB1c2FnZVN0YXRlLiI7CiAgICByZWZlcmVuY2UgIlM1LTE5MzUxOCI7CiAgfQoKICByZXZpc2lvbiAyMDE5LTA2LTIzIHsKICAgIHJlZmVyZW5jZSAgIkluaXRpYWwgdmVyc2lvbi4iOwogIH0KCiAgdHlwZWRlZiBFbmFibGVkRGlzYWJsZWQgewogICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgIGVudW0gRElTQUJMRUQgOwogICAgICBlbnVtIEVOQUJMRUQgOwogICAgfQogIH0KICAKICBncm91cGluZyBQcm9jZXNzTW9uaXRvciB7CiAgICBkZXNjcmlwdGlvbiAiUHJvdmlkZXMgYXR0cmlidXRlcyB0byBtb25pdG9yIHRoZSBwcm9ncmVzcyBvZiBwcm9jZXNzZXMgCiAgICAgIHdpdGggc3BlY2lmaWMgcHVycG9zZSBhbmQgbGltaXRlZCBsaWZldGltZSBydW5uaW5nIG9uIE1uUyBwcm9kdWNlcnMuIAogICAgICBJdCBtYXkgYmUgdXNlZCBhcyBkYXRhIHR5cGUgZm9yIGRlZGljYXRlZCBwcm9ncmVzcyBtb25pdG9yIGF0dHJpYnV0ZXMgCiAgICAgIHdoZW4gc3BlY2lmeWluZyB0aGUgbWFuYWdlbWVudCByZXByZXNlbnRhdGlvbiBvZiB0aGVzZSBwcm9jZXNzZXMuIAogICAgICBUaGUgYXR0cmlidXRlcyBpbiB0aGlzIGNsYXVzZSBhcmUgZGVmaW5lZCBpbiBhIGdlbmVyaWMgd2F5LiAKICAgICAgRm9yIHNvbWUgYXR0cmlidXRlcyBzcGVjaWFsaXNhdGlvbnMgbWF5IGJlIHByb3ZpZGVkIHdoZW4gc3BlY2lmeWluZyBhIAogICAgICBjb25jcmV0ZSBwcm9jZXNzIHJlcHJlc2VudGF0aW9uLgoKICAgICAgSWYgYSBtYW5hZ2VtZW50IG9wZXJhdGlvbiBvbiBzb21lIElPQ3MgdHJpZ2dlcnMgYW4gYXNzb2NpYXRlZCAKICAgICAgYXN5bmNocm9ub3VzIHByb2Nlc3MgKHdob3NlIHByb2dyZXNzIHNoYWxsIGJlIG1vbml0b3JlZCksIHRoaXMgc2hvdWxkIAogICAgICBhbHNvIHJlc3VsdCBpbiBjcmVhdGluZyBhbiBhdHRyaWJ1dGUgbmFtZWQgJ3Byb2Nlc3NNb25pdG9yJyAob2YgdHlwZSAKICAgICAgJ1Byb2Nlc3NNb25pdG9yJykgaW4gdGhlc2UgSU9DKHMpLiBUaGUgcHJvY2Vzc01vbml0b3IgYXR0cmlidXRlIG1heSBiZSAKICAgICAgYWNjb21wYW5pZWQgYnkgdXNlLWNhc2Ugc3BlY2lmaWMgYWRkaXRpb25hbCBkYXRhIGl0ZW1zLgoKICAgICAgVGhlIHByb2dyZXNzIG9mIHRoZSBwcm9jZXNzIGlzIGRlc2NyaWJlZCBieSB0aGUgJ3N0YXR1cycgYW5kIAogICAgICAncHJvZ3Jlc3NQZXJjZW50YWdlJyBhdHRyaWJ1dGVzLiBBZGRpdGlvbmFsIHRleHR1YWwgcXVhbGlmaWNhdGlvbnMgZm9yIAogICAgICB0aGUgJ3N0YXR1cycgYXR0cmlidXRlIG1heSBiZSBwcm92aWRlZCBieSB0aGUgJ3Byb2dyZXNzU3RhdGVJbmZvJyBhbmQgCiAgICAgICdyZXN1bHRTdGF0ZUluZm8nIGF0dHJpYnV0ZXMuCgogICAgICBXaGVuIHRoZSBwcm9jZXNzIGlzIGluc3RhbnRpYXRlZCwgdGhlICdzdGF0dXMnIGlzIHNldCB0byAnTk9UX1JVTk5JTkcnIAogICAgICBhbmQgdGhlICdwcm9ncmVzc1BlcmNlbnRhZ2UnIHRvICcwJy4gVGhlIE1uUyBwcm9kdWNlciBkZWNpZGVzIHdoZW4gdG8gCiAgICAgIHN0YXJ0IGV4ZWN1dGluZyB0aGUgcHJvY2VzcyBhbmQgdG8gdHJhbnNpdGlvbiBpbnRvIHRoZSAnUlVOTklORycgc3RhdGUuIAogICAgICBUaGlzIHRpbWUgaXMgY2FwdHVyZWQgaW4gdGhlICdzdGFydFRpbWUnIGF0dHJpYnV0ZS4gQWx0ZXJuYXRpdmVseSwgdGhlIAogICAgICBwcm9jZXNzIG1heSBzdGFydCB0byBleGVjdXRlIGRpcmVjdGx5IHVwb24gaXRzIGluc3RhbnRpYXRpb24uIE9uZSAKICAgICAgYWx0ZXJuYXRpdmUgbXVzdCBiZSBzZWxlY3RlZCB3aGVuIHVzaW5nIHRoaXMgZGF0YSB0eXBlLgoKICAgICAgRHVyaW5nIHRoZSAnUlVOTklORycgc3RhdGUgdGhlICdwcm9ncmVzc1BlcmNlbnRhZ2UnIGF0dHJpYnV0ZSBtYXkgYmUgCiAgICAgIHJlcGVhdGVkbHkgdXBkYXRlZC4gVGhlIGV4YWN0IHNlbWFudGljIG9mIHRoaXMgYXR0cmlidXRlIGlzIHN1YmplY3QgdG8gCiAgICAgIGZ1cnRoZXIgc3BlY2lhbGlzYXRpb24uIFRoZSAncHJvZ3Jlc3NJbmZvJyBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgdG8gCiAgICAgIHByb3ZpZGUgYWRkaXRpb25hbCB0ZXh0dWFsIGluZm9ybWF0aW9uIGluIHRoZSAnTk9UX1JVTk5JTkcnLCAnQ0FOQ0VMTElORycgCiAgICAgIGFuZCAnUlVOTklORycgc3RhdGVzLiBGdXJ0aGVyIHNwZWNpYWxpc2F0aW9uIG9mIAogICAgICAncHJvZ3Jlc3NTdGF0ZUluZm8nIG1heSBiZSBwcm92aWRlZCB3aGVyZSB0aGlzIGRhdGEgdHlwZSBpcyAKICAgICAgdXNlZC4KCiAgICAgIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIHRoZSBwcm9jZXNzLCB0aGUgJ3N0YXR1cycgYXR0cmlidXRlIGlzIHNldCAKICAgICAgdG8gJ0ZJTklTSEVEJywgdGhlICdwcm9ncmVzc1BlcmNlbnRhZ2UnIHRvIDEwMCUuIFRoZSB0aW1lIGlzIGNhcHR1cmVkIGluIAogICAgICB0aGUgJ2VuZFRpbWUnIGF0dHJpYnV0ZS4gQWRkaXRpb25hbCB0ZXh0dWFsIGluZm9ybWF0aW9uIG1heSBiZSBwcm92aWRlZCAKICAgICAgaW4gdGhlICdyZXN1bHRTdGF0ZUluZm8nIGF0dHJpYnV0ZS4gVGhlIHR5cGUgb2YgCiAgICAgICdyZXN1bHRTdGF0ZUluZm8nIGluIHRoaXMgZGF0YSB0eXBlIGRlZmluaXRpb24gaXMgJ1N0cmluZycuIAogICAgICBGdXJ0aGVyIHNwZWNpYWxpc2F0aW9uIG9mICdyZXN1bHRTdGF0ZUluZm8nIG1heSBiZSBwcm92aWRlZCAKICAgICAgd2hlcmUgdGhpcyBkYXRhIHR5cGUgaXMgdXNlZC4KCiAgICAgIEluIGNhc2UgdGhlIHByb2Nlc3MgZmFpbHMgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LCB0aGUgJ3N0YXR1cycgCiAgICAgIGF0dHJpYnV0ZSBpcyBzZXQgdG8gJ0ZBSUxFRCcgb3IgJ1BBUlRJQUxMWV9GQUlMRUQnLCB0aGUgY3VycmVudCB2YWx1ZSBvZiAKICAgICAgJ3Byb2dyZXNzUGVyY2VudGFnZScgaXMgZnJvemVuLCBhbmQgdGhlIHRpbWUgY2FwdHVyZWQgaW4gJ2VuZFRpbWUnLiBUaGUgCiAgICAgICdyZXN1bHRTdGF0ZUluZm8nIHNwZWNpZmllcyB0aGUgcmVhc29uIGZvciB0aGUgZmFpbHVyZS4gCiAgICAgIFNwZWNpZmljIGZhaWx1cmUgcmVhc29ucyBtYXkgYmUgc3BlY2lmaWVkIHdoZXJlIHRoZSBkYXRhIHR5cGUgZGVmaW5lZCBpbiAKICAgICAgdGhpcyBjbGF1c2UgaXMgdXNlZC4gVGhlIGV4YWN0IHNlbWFudGljIG9mIGZhaWx1cmUgbWF5IGJlIHN1YmplY3QgZm9yIAogICAgICBmdXJ0aGVyIHNwZWNpYWxpc2F0aW9uIGFzIHdlbGwuCgogICAgICBJbiBjYXNlIHRoZSBwcm9jZXNzIGlzIGNhbmNlbGxlZCwgdGhlICdzdGF0dXMnIGF0dHJpYnV0ZSBpcyBmaXJzdCBzZXQgdG8gCiAgICAgICdDQU5DRUxMSU5HJyBhbmQgd2hlbiB0aGUgcHJvY2VzcyBpcyByZWFsbHkgY2FuY2VsbGVkIHRoZW4gdG8gJ0NBTkNFTExFRCcuIAogICAgICBUaGUgdHJhbnNpdGlvbiB0byAnQ0FOQ0VMTEVEJyBpcyBjYXB0dXJlZCBpbiB0aGUgJ2VuZFRpbWUnIGF0dHJpYnV0ZS4gCiAgICAgIFRoZSB2YWx1ZSBvZiAncHJvZ3Jlc3NQZXJjZW50YWdlJyBpcyBmcm96ZW4uIEFkZGl0aW9uYWwgdGV4dHVhbCAKICAgICAgaW5mb3JtYXRpb24gbWF5IGJlIHByb3ZpZGVkIGluIHRoZSAncmVzdWx0U3RhdGVJbmZvJyBhdHRyaWJ1dGUuCgogICAgICBUaGUgJ3Jlc3VsdFN0YXRlSW5mbycgYXR0cmlidXRlIGlzIHByb3ZpZGVkIG9ubHkgZm9yIGFkZGl0aW9uYWwgdGV4dHVhbCAKICAgICAgcXVhbGlmaWNhdGlvbiBvZiB0aGUgc3RhdGVzICdGSU5JU0hFRCcsICdGQUlMRUQnLCAnUEFSVElBTExZX0ZBSUxFRCcgb3IgCiAgICAgICdDQU5DRUxMRUQnLiBJdCBzaGFsbCBub3QgYmUgdXNlZCBmb3IgbWFraW5nIHRoZSBvdXRjb21lLCB0aGF0IHRoZSAKICAgICAgcHJvY2VzcyBtYXkgcHJvZHVjZSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGF2YWlsYWJsZS4KCiAgICAgIFRoZSBwcm9jZXNzIG1heSBoYXZlIHRvIGJlIGNvbXBsZXRlZCB3aXRoaW4gYSBjZXJ0YWluIHRpbWUgYWZ0ZXIgaXRzIAogICAgICBjcmVhdGlvbiwgZm9yIGV4YW1wbGUgYmVjYXVzZSByZXF1aXJlZCBkYXRhIG1heSBub3QgYmUgYXZhaWxhYmxlIGFueSAKICAgICAgbW9yZSBhZnRlciBhIGNlcnRhaW4gdGltZSwgb3IgdGhlIHByb2Nlc3Mgb3V0Y29tZSBpcyBuZWVkZWQgdW50aWwgYSAKICAgICAgY2VydGFpbiB0aW1lIGFuZCB3aGVuIG5vdCBwcm92aWRlZCBieSB0aGlzIHRpbWUgaXMgbm90IG5lZWRlZCBhbnkgbW9yZS4gCiAgICAgIFRoZSB0aW1lIHVudGlsIHRoZSBNblMgcHJvZHVjZXIgYXV0b21hdGljYWxseSBjYW5jZWxzIHRoZSBwcm9jZXNzIGlzIAogICAgICBpbmRpY2F0ZWQgYnkgdGhlICd0aW1lcicgYXR0cmlidXRlLiI7CiAgICAgIAogICAgbGVhZiBpZCB7CiAgICAgIHR5cGUgc3RyaW5nOwogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgZGVzY3JpcHRpb24gIklkIG9mIHRoZSBwcm9jZXNzLiBJdCBpcyB1bmlxdWUgd2l0aGluIGEgc2luZ2xlIAogICAgICAgIG11bHRpdmFsdWUgYXR0cmlidXRlIG9mIHR5cGUgUHJvY2Vzc01vbml0b3IuIjsKICAgIH0KICAgIAogICAgbGVhZiBzdGF0dXMgeyAKICAgICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgICAgZW51bSBOT1RfU1RBUlRFRCA7CiAgICAgICAgZW51bSBSVU5OSU5HIDsKICAgICAgICBlbnVtIENBTkNFTExJTkcgOwogICAgICAgIGVudW0gRklOSVNIRUQgOwogICAgICAgIGVudW0gRkFJTEVEIDsKICAgICAgICBlbnVtIFBBUlRJQUxMWV9GQUlMRUQgOwogICAgICAgIGVudW0gQ0FOQ0VMTEVEIDsKICAgICAgfQogICAgICBjb25maWcgZmFsc2U7CiAgICAgIGRlZmF1bHQgIFJVTk5JTkc7CiAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIHRoZSBzdGF0dXMgb2YgdGhlIGFzc29jaWF0ZWQgcHJvY2VzcywgCiAgICAgICAgd2hldGhlciBpdCBmYWlscywgc3VjY2VlZHMgZXRjLiAKICAgICAgICBJdCBkb2VzIG5vdCByZXByZXNlbnQgdGhlIHJldHVybmVkIHZhbHVlcyBvZiBhIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZCAKICAgICAgICBwcm9jZXNzLiAiOwogICAgfQoKICAgIGxlYWYgcHJvZ3Jlc3NQZXJjZW50YWdlIHsKICAgICAgdHlwZSB1aW50OCB7CiAgICAgICAgcmFuZ2UgMC4uMTAwOwogICAgICB9CiAgICAgIGNvbmZpZyBmYWxzZTsKICAgICAgZGVzY3JpcHRpb24gIlByb2dyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHByb2Nlc3MgYXMgcGVyY2VudGFnZSI7CiAgICB9CgogICAgbGVhZi1saXN0IHByb2dyZXNzU3RhdGVJbmZvIHsKICAgICAgdHlwZSBzdHJpbmc7CiAgICAgIGNvbmZpZyBmYWxzZTsKICAgICAgZGVzY3JpcHRpb24gIkFkZGl0aW9uYWwgdGV4dHVhbCBxdWFsaWZpY2F0aW9uIG9mIHRoZSBzdGF0ZXMgCiAgICAgICAgJ05PVF9TVEFSVEVEJywgJ0NBTkNFTExJTkcnIGFuZCAnUlVOTklORycuCgogICAgICAgIEZvciBzcGVjaWZpYyBwcm9jZXNzZXMsIHNwZWNpZmljIHdlbGwtZGVmaW5lZCBzdHJpbmdzIChlLmcuIHN0cmluZyAKICAgICAgICBwYXR0ZXJucyBvciBlbnVtcykgbWF5IGJlIGRlZmluZWQgYXMgYSBzcGVjaWFsaXNhdGlvbi4iOwogICAgfQoKICAgIGxlYWYgcmVzdWx0U3RhdGVJbmZvIHsKICAgICAgdHlwZSBzdHJpbmc7CiAgICAgIGNvbmZpZyBmYWxzZTsKICAgICAgZGVzY3JpcHRpb24gIkFkZGl0aW9uYWwgdGV4dHVhbCBxdWFsaWZpY2F0aW9uIG9mIHRoZSBzdGF0ZXMgCiAgICAgICAgJ0ZJTklTSEVEJywgJ0ZBSUxFRCcsICdQQVJUSUFMTFlfRkFJTEVEIGFuZCAnQ0FOQ0VMTEVEJy4gCiAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSAnRkFJTEVEJyBvciAnUEFSVElBTExZX0ZBSUxFRCcgc3RhdGUgdGhpcyAKICAgICAgICBhdHRyaWJ1dGUgbWF5IGJlIHVzZWQgdG8gcHJvdmlkZSBlcnJvciByZWFzb25zLgoKICAgICAgICBUaGlzIGF0dHJpYnV0ZSBzaGFsbCBub3QgYmUgdXNlZCB0byBtYWtlIHRoZSBvdXRjb21lIG9mIHRoZSBwcm9jZXNzIAogICAgICAgIGF2YWlsYWJsZSBmb3IgcmV0cmlldmFsLCBpZiBhbnkuIEZvciB0aGlzIHB1cnBvc2UsIGRlZGljYXRlZCAKICAgICAgICBhdHRyaWJ1dGVzIHNoYWxsIGJlIHNwZWNpZmllZCB3aGVuIHNwZWNpZnlpbmcgdGhlIHJlcHJlc2VudGF0aW9uIG9mIAogICAgICAgIGEgc3BlY2lmaWMgcHJvY2Vzcy4KCiAgICAgICAgRm9yIHNwZWNpZmljIHByb2Nlc3Nlcywgc3BlY2lmaWMgd2VsbC1kZWZpbmVkIHN0cmluZ3MgKGUuZy4gc3RyaW5nIAogICAgICAgIHBhdHRlcm5zIG9yIGVudW1zKSBtYXkgYmUgZGVmaW5lZCBhcyBhIHNwZWNpYWxpc2F0aW9uLiI7CiAgICB9CgogICAgbGVhZiBzdGFydFRpbWUgewogICAgICB0eXBlIHlhbmc6ZGF0ZS1hbmQtdGltZTsKICAgICAgY29uZmlnIGZhbHNlOwogICAgICBkZXNjcmlwdGlvbiAiU3RhcnQgdGltZSBvZiB0aGUgYXNzb2NpYXRlZCBwcm9jZXNzLCBpLmUuIHRoZSB0aW1lIHdoZW4gdGhlIAogICAgICAgIHN0YXR1cyBjaGFuZ2VkIGZyb20gJ05PVF9TVEFSVEVEJyB0byAnUlVOTklORycuIjsKICAgIH0KCiAgICBsZWFmIGVuZFRpbWUgewogICAgICB0eXBlIHlhbmc6ZGF0ZS1hbmQtdGltZTsKICAgICAgY29uZmlnIGZhbHNlOwogICAgICBkZXNjcmlwdGlvbiAiRGF0ZSBhbmQgdGltZSB3aGVuIHN0YXR1cyBjaGFuZ2VkIHRvICdTVUNDRVNTJywgJ0NBTkNFTExFRCcsIAogICAgICAgICdGQUlMRUQnIG9yICdQQVJUSUFMTFlfRkFJTEVEJy4gCgogICAgICAgIElmIHRoZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUsIGl0IGlzIHRoZSBlc3RpbWF0ZWQgdGltZSAKICAgICAgICB0aGUgcHJvY2VzcyB3aWxsIGVuZC4iOwogICAgfQoKICAgIGxlYWYgdGltZXIgewogICAgICB0eXBlIHVpbnQzMjsKICAgICAgdW5pdHMgbWludXRlczsKICAgICAgZGVzY3JpcHRpb24gIlRpbWUgdW50aWwgdGhlIGFzc29jaWF0ZWQgcHJvY2VzcyBpcyBhdXRvbWF0aWNhbGx5IGNhbmNlbGxlZC4KICAgICAgICBJZiBzZXQsIHRoZSBzeXN0ZW0gZGVjcmVhc2VzIHRoZSB0aW1lciB3aXRoIHRpbWUuIFdoZW4gaXQgcmVhY2hlcyB6ZXJvIAogICAgICAgIHRoZSBjYW5jZWxsYXRpb24gb2YgdGhlIGFzc29jaWF0ZWQgcHJvY2VzcyBpcyBpbml0aWF0ZWQgYnkgdGhlIAogICAgICAgIE1uU19Qcm9kdWNlci4gCiAgICAgICAgSWYgbm90IHNldCwgdGhlcmUgaXMgbm8gdGltZSBsaW1pdCBmb3IgdGhlIHByb2Nlc3MuCiAgICAgICAgCiAgICAgICAgT25jZSB0aGUgdGltZXIgaXMgc2V0LCB0aGUgY29uc3VtZXIgY2FuIG5vdCBjaGFuZ2UgaXQgYW55bW9yZS4gCiAgICAgICAgSWYgdGhlIGNvbnN1bWVyIGhhcyBub3Qgc2V0IHRoZSB0aW1lciB0aGUgTW5TIFByb2R1Y2VyIG1heSBzZXQgaXQuIjsKICAgIH0KICB9CiAgCiAgdHlwZWRlZiBUZW50aE9mRGVncmVlcyB7IAogICAgdHlwZSB1aW50MTYgeyAKICAgICAgcmFuZ2UgMC4uMzYwMDsgCiAgICB9CiAgICB1bml0cyAiMC4xIGRlZ3JlZXMiOwogICAgZGVzY3JpcHRpb24gIkEgc2luZ2xlIGludGVncmFsIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gYW4gYW5nbGUgaW4gZGVncmVlcyAKICAgICAgYmV0d2VlbiAwIGFuZCAzNjAgd2l0aCBhIHJlc29sdXRpb24gb2YgMC4xIGRlZ3JlZXMuIjsKICB9CgogIHR5cGVkZWYgTGF0aXR1ZGUgewogICAgdHlwZSBkZWNpbWFsNjQgewogICAgICBmcmFjdGlvbi1kaWdpdHMgNDsKICAgICAgcmFuZ2UgIi05MC4wMDAwLi4rOTAuMDAwMCI7IAogICAgfQogICAgZGVzY3JpcHRpb24gIkxhdGl0dWRlIHZhbHVlcyI7CiAgfQoKICB0eXBlZGVmIExvbmdpdHVkZSB7CiAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgIGZyYWN0aW9uLWRpZ2l0cyA0OwogICAgICByYW5nZSAiLTE4MC4wMDAwLi4rMTgwLjAwMDAiOyAKICAgIH0KICAgIGRlc2NyaXB0aW9uICJMb25naXR1ZGUgdmFsdWVzIjsKICB9CgogIHR5cGVkZWYgT25PZmYgewogICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgIGVudW0gT047CiAgICAgIGVudW0gT0ZGOwogICAgfQogIH0KICAKICAvLyBncm91cGluZyBNYW5hZ2VkTkZQcm9maWxlIHdpbGwgYmUgcmVtb3ZlZCBhcyBpdCBpcyAKICAvLyAgYmVpbmcgbW92ZWQgdG8gXzNncHAtNWdjLW5ybS1uZnByb2ZpbGUKICBncm91cGluZyBNYW5hZ2VkTkZQcm9maWxlIHsKICAgIGRlc2NyaXB0aW9uICJEZWZpbmVzIHByb2ZpbGUgZm9yIG1hbmFnZWQgTkYiOwogICAgcmVmZXJlbmNlICIzR1BQIFRTIDIzLjUwMSI7CiAgICAKICAgIGxlYWYgaWR4IHsgdHlwZSB1aW50MzIgOyB9CiAgICAKICAgIGxlYWYgbmZJbnN0YW5jZUlEIHsKICAgICAgY29uZmlnIGZhbHNlOwogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgdHlwZSB5YW5nOnV1aWQgOwogICAgICBkZXNjcmlwdGlvbiAiVGhpcyBwYXJhbWV0ZXIgZGVmaW5lcyBwcm9maWxlIGZvciBtYW5hZ2VkIE5GLiAKICAgICAgICBUaGUgZm9ybWF0IG9mIHRoZSBORiBJbnN0YW5jZSBJRCBzaGFsbCBiZSBhIAogICAgICAgIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIChVVUlEKSB2ZXJzaW9uIDQsIAogICAgICAgIGFzIGRlc2NyaWJlZCBpbiBJRVRGIFJGQyA0MTIyICIgOwogICAgfQogICAgCiAgICBsZWFmLWxpc3QgbmZUeXBlIHsKICAgICAgY29uZmlnIGZhbHNlOwogICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgdHlwZSBOZlR5cGU7CiAgICAgIGRlc2NyaXB0aW9uICJUeXBlIG9mIHRoZSBOZXR3b3JrIEZ1bmN0aW9uIiA7CiAgICB9CiAgICAKICAgIGxlYWYgaG9zdEFkZHIgewogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgdHlwZSBpbmV0Omhvc3QgOwogICAgICBkZXNjcmlwdGlvbiAiSG9zdCBhZGRyZXNzIG9mIGEgTkYiOwogICAgfQogICAgCiAgICBsZWFmIGF1dGh6SW5mbyB7CiAgICAgIHR5cGUgc3RyaW5nIDsKICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcGFyYW1ldGVyIGRlZmluZXMgTkYgU3BlY2lmaWMgU2VydmljZSBhdXRob3JpemF0aW9uIAogICAgICAgIGluZm9ybWF0aW9uLiBJdCBzaGFsbCBpbmNsdWRlIHRoZSBORiB0eXBlIChzKSBhbmQgTkYgcmVhbG1zL29yaWdpbnMgCiAgICAgICAgYWxsb3dlZCB0byBjb25zdW1lIE5GIFNlcnZpY2Uocykgb2YgTkYgU2VydmljZSBQcm9kdWNlci4iOwogICAgICByZWZlcmVuY2UgIlNlZSBUUyAyMy41MDEiIDsKICAgIH0KICAgIAogICAgbGVhZiBsb2NhdGlvbiB7CiAgICAgIHR5cGUgc3RyaW5nIDsKICAgICAgZGVzY3JpcHRpb24gIkluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgTkYgaW5zdGFuY2UgCiAgICAgICAgKGUuZy4gZ2VvZ3JhcGhpYyBsb2NhdGlvbiwgZGF0YSBjZW50ZXIpIGRlZmluZWQgYnkgb3BlcmF0b3IiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogICAgCiAgICBsZWFmIGNhcGFjaXR5IHsKICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgIHR5cGUgdWludDE2IDsKICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcGFyYW1ldGVyIGRlZmluZXMgc3RhdGljIGNhcGFjaXR5IGluZm9ybWF0aW9uIAogICAgICAgIGluIHRoZSByYW5nZSBvZiAwLTY1NTM1LCBleHByZXNzZWQgYXMgYSB3ZWlnaHQgcmVsYXRpdmUgdG8gb3RoZXIgCiAgICAgICAgTkYgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIHR5cGU7IGlmIGNhcGFjaXR5IGlzIGFsc28gcHJlc2VudCBpbiB0aGUgCiAgICAgICAgbmZTZXJ2aWNlTGlzdCBwYXJhbWV0ZXJzLCB0aG9zZSB3aWxsIGhhdmUgcHJlY2VkZW5jZSBvdmVyIHRoaXMgdmFsdWUuIjsKICAgICAgcmVmZXJlbmNlICJUUyAyOS41MTAiIDsKICAgIH0KICAgICAgCiAgICBsZWFmIG5GU3J2R3JvdXBJZCB7CiAgICAgIHR5cGUgc3RyaW5nIDsKICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcGFyYW1ldGVyIGRlZmluZXMgaWRlbnRpdHkgb2YgdGhlIGdyb3VwIHRoYXQgaXMgCiAgICAgICAgc2VydmVkIGJ5IHRoZSBORiBpbnN0YW5jZS4KICAgICAgICBNYXkgYmUgY29uZmlnIGZhbHNlIG9yIHRydWUgZGVwZW5kaW5nIG9uIHRoZSBNYW5hZ2VkRnVuY3Rpb24uIAogICAgICAgIENvbmZpZz10cnVlIGZvciBVZHJpbmZvLiBDb25maWc9ZmFsc2UgZm9yIFVkbUluZm8gYW5kIEF1c2ZJbmZvLiAKICAgICAgICBTaGFsbCBiZSBwcmVzZW50IGlmIC4uL25mVHlwZSA9IFVETSBvciBBVVNGIG9yIFVEUi4gIjsKICAgICAgcmVmZXJlbmNlICJUUyAyOS41MTAiIDsKICAgIH0KICAgIAogICAgbGVhZi1saXN0IHN1cHBvcnRlZERhdGFTZXRJZHMgewogICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICBlbnVtIFNVQlNDUklQVElPTjsKICAgICAgICBlbnVtIFBPTElDWTsKICAgICAgICBlbnVtIEVYUE9TVVJFOwogICAgICAgIGVudW0gQVBQTElDQVRJT047CiAgICAgIH0KICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2Ygc3VwcG9ydGVkIGRhdGEgc2V0cyBpbiB0aGUgVURSIGluc3RhbmNlLiAKICAgICAgICBNYXkgYmUgcHJlc2VudCBpZiAuLi9uZlR5cGUgPSBVRFIiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogICAgCiAgICBsZWFmLWxpc3Qgc21mU2VydmluZ0FyZWFzIHsKICAgICAgdHlwZSBzdHJpbmcgOwogICAgICBkZXNjcmlwdGlvbiAiRGVmaW5lcyB0aGUgU01GIHNlcnZpY2UgYXJlYShzKSB0aGUgVVBGIGNhbiBzZXJ2ZS4gCiAgICAgICAgU2hhbGwgYmUgcHJlc2VudCBpZiAuLi9uZlR5cGUgPSBVUEYiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogICAgCiAgICBsZWFmIHByaW9yaXR5IHsKICAgICAgdHlwZSB1aW50MTY7CiAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHBhcmFtZXRlciBkZWZpbmVzIFByaW9yaXR5IChyZWxhdGl2ZSB0byBvdGhlciBORnMgCiAgICAgICAgb2YgdGhlIHNhbWUgdHlwZSkgaW4gdGhlIHJhbmdlIG9mIDAtNjU1MzUsIHRvIGJlIHVzZWQgZm9yIE5GIHNlbGVjdGlvbjsgCiAgICAgICAgbG93ZXIgdmFsdWVzIGluZGljYXRlIGEgaGlnaGVyIHByaW9yaXR5LiBJZiBwcmlvcml0eSBpcyBhbHNvIHByZXNlbnQgCiAgICAgICAgaW4gdGhlIG5mU2VydmljZUxpc3QgcGFyYW1ldGVycywgdGhvc2Ugd2lsbCBoYXZlIHByZWNlZGVuY2Ugb3ZlciAKICAgICAgICB0aGlzIHZhbHVlLiBTaGFsbCBiZSBwcmVzZW50IGlmIC4uL25mVHlwZSA9IEFNRiAiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogIH0KICAKICB0eXBlZGVmIHVzYWdlU3RhdGUgewogICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgIGVudW0gSURMRTsKICAgICAgZW51bSBBQ1RJVkU7CiAgICAgIGVudW0gQlVTWTsKICAgIH0KICAgIGRlc2NyaXB0aW9uICJJdCBkZXNjcmliZXMgd2hldGhlciBvciBub3QgdGhlIHJlc291cmNlIGlzIGFjdGl2ZWx5IGluIAogICAgICB1c2UgYXQgYSBzcGVjaWZpYyBpbnN0YW50LCBhbmQgaWYgc28sIHdoZXRoZXIgb3Igbm90IGl0IGhhcyBzcGFyZSAKICAgICAgY2FwYWNpdHkgZm9yIGFkZGl0aW9uYWwgdXNlcnMgYXQgdGhhdCBpbnN0YW50LiBUaGUgdmFsdWUgaXMgUkVBRC1PTkxZLiI7CiAgICByZWZlcmVuY2UgIklUVSBUIFJlY29tbWVuZGF0aW9uIFguNzMxIjsKICB9CiAgCiAgZ3JvdXBpbmcgU0FQIHsKICAgIGxlYWYgaG9zdCB7CiAgICAgIHR5cGUgaW5ldDpob3N0OwogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgIH0KICAgIGxlYWYgcG9ydCB7CiAgICAgIHR5cGUgaW5ldDpwb3J0LW51bWJlcjsKICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICB9CiAgICBkZXNjcmlwdGlvbiAiU2VydmljZSBhY2Nlc3MgcG9pbnQuIjsKICAgIHJlZmVyZW5jZSAiVFMgMjguNjIyIjsKICB9CiAgCiAgdHlwZWRlZiBNY2MgewogICAgZGVzY3JpcHRpb24gIlRoZSBtb2JpbGUgY291bnRyeSBjb2RlIGNvbnNpc3RzIG9mIHRocmVlIGRlY2ltYWwgZGlnaXRzLCAKICAgICAgVGhlIGZpcnN0IGRpZ2l0IG9mIHRoZSBtb2JpbGUgY291bnRyeSBjb2RlIGlkZW50aWZpZXMgdGhlIGdlb2dyYXBoaWMgCiAgICAgIHJlZ2lvbiAodGhlIGRpZ2l0cyAxIGFuZCA4IGFyZSBub3QgdXNlZCk6IjsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnWzAyLTc5XVswLTldWzAtOV0nOwogICAgfQogICAgcmVmZXJlbmNlICIzR1BQIFRTIDIzLjAwMyBzdWJjbGF1c2UgMi4yIGFuZCAxMi4xIjsKICB9CgogIHR5cGVkZWYgTW5jIHsKICAgIGRlc2NyaXB0aW9uICJUaGUgbW9iaWxlIG5ldHdvcmsgY29kZSBjb25zaXN0cyBvZiB0d28gb3IgdGhyZWUgCiAgICAgIGRlY2ltYWwgZGlnaXRzIChmb3IgZXhhbXBsZTogTU5DIG9mIDAwMSBpcyBub3QgdGhlIHNhbWUgYXMgTU5DIG9mIDAxKSI7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJ1swLTldWzAtOV1bMC05XXxbMC05XVswLTldJzsKICAgIH0KICAgIHJlZmVyZW5jZSAiM0dQUCBUUyAyMy4wMDMgc3ViY2xhdXNlIDIuMiBhbmQgMTIuMSI7CiAgfQoKICBncm91cGluZyBQTE1OSWQgewogICAgbGVhZiBtY2MgewogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgdHlwZSBNY2M7CiAgICB9CiAgICBsZWFmIG1uYyB7CiAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICB0eXBlIE1uYzsKICAgIH0KICAgIHJlZmVyZW5jZSAiVFMgMjMuNjU4IjsKICB9CiAgCiAgdHlwZWRlZiBOY2kgewogICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIFRoZSBOQ0kgc2hhbGwgYmUgb2YgZml4ZWQgbGVuZ3RoIG9mIDM2IGJpdHMgCiAgICAgIGFuZCBzaGFsbCBiZSBjb2RlZCB1c2luZyBmdWxsIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLiAKICAgICAgVGhlIGV4YWN0IGNvZGluZyBvZiB0aGUgTkNJIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBlYWNoIFBMTU4gb3BlcmF0b3IiOwogICAgcmVmZXJlbmNlICJUUyAyMy4wMDMiOwogICAgdHlwZSB1bmlvbiB7CiAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICBsZW5ndGggMzY7CiAgICAgICAgcGF0dGVybiAnWzAxXSsnOwogICAgICB9CiAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICBsZW5ndGggOTsKICAgICAgICBwYXR0ZXJuICdbYS1mQS1GMC05XSonOwogICAgICB9CiAgICB9CiAgfQogICAgCiAgdHlwZWRlZiBPcGVyYXRpb25hbFN0YXRlIHsKICAgIHJlZmVyZW5jZSAiM0dQUCBUUyAyOC42MjUgYW5kIElUVS1UIFguNzMxIjsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIERJU0FCTEVEIHsKICAgICAgICB2YWx1ZSAwOwogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgcmVzb3VyY2UgaXMgdG90YWxseSBpbm9wZXJhYmxlLiI7CiAgICAgIH0KCiAgICAgIGVudW0gRU5BQkxFRCB7CiAgICAgICAgdmFsdWUgMTsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIHJlc291cmNlIGlzIHBhcnRpYWxseSBvciBmdWxseSBvcGVyYWJsZS4iOwogICAgICB9CgogICAgfQogIH0KICAKICB0eXBlZGVmIEJhc2ljQWRtaW5pc3RyYXRpdmVTdGF0ZSB7CiAgICByZWZlcmVuY2UgIjNHUFAgVFMgMjguNjI1IGFuZCBJVFUtVCBYLjczMSI7CiAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgZW51bSBMT0NLRUQgewogICAgICAgIHZhbHVlIDA7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSByZXNvdXJjZSBpcyBhZG1pbmlzdHJhdGl2ZWx5IHByb2hpYml0ZWQgZnJvbSBwZXJmb3JtaW5nCiAgICAgICAgICAgICAgICAgc2VydmljZXMgZm9yIGl0cyB1c2Vycy4iOwogICAgICB9CgogICAgICBlbnVtIFVOTE9DS0VEIHsKICAgICAgICB2YWx1ZSAxOwogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgcmVzb3VyY2UgaXMgYWRtaW5pc3RyYXRpdmVseSBwZXJtaXR0ZWQgdG8gcGVyZm9ybQogICAgICAgICAgc2VydmljZXMgZm9yIGl0cyB1c2Vycy4gVGhpcyBpcyBpbmRlcGVuZGVudCBvZiBpdHMgaW5oZXJlbnQKICAgICAgICAgIG9wZXJhYmlsaXR5LiI7CiAgICAgIH0KICAgIH0KICB9CiAgCiAgdHlwZWRlZiBBZG1pbmlzdHJhdGl2ZVN0YXRlIHsKICAgIHJlZmVyZW5jZSAiM0dQUCBUUyAyOC42MjUgYW5kIElUVS1UIFguNzMxIjsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIExPQ0tFRCB7CiAgICAgICAgdmFsdWUgMDsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIHJlc291cmNlIGlzIGFkbWluaXN0cmF0aXZlbHkgcHJvaGliaXRlZCBmcm9tIHBlcmZvcm1pbmcKICAgICAgICAgICAgICAgICBzZXJ2aWNlcyBmb3IgaXRzIHVzZXJzLiI7CiAgICAgIH0KCiAgICAgIGVudW0gVU5MT0NLRUQgewogICAgICAgIHZhbHVlIDE7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSByZXNvdXJjZSBpcyBhZG1pbmlzdHJhdGl2ZWx5IHBlcm1pdHRlZCB0byBwZXJmb3JtCiAgICAgICAgICBzZXJ2aWNlcyBmb3IgaXRzIHVzZXJzLiBUaGlzIGlzIGluZGVwZW5kZW50IG9mIGl0cyBpbmhlcmVudAogICAgICAgICAgb3BlcmFiaWxpdHkuIjsKICAgICAgfQoKICAgICAgZW51bSBTSFVUVElOR0RPV04gewogICAgICAgIHZhbHVlIDI7CiAgICAgICAgZGVzY3JpcHRpb24gIlVzZSBvZiB0aGUgcmVzb3VyY2UgaXMgYWRtaW5pc3RyYXRpdmVseSBwZXJtaXR0ZWQgdG8KICAgICAgICAgIGV4aXN0aW5nIGluc3RhbmNlcyBvZiB1c2Ugb25seS4gV2hpbGUgdGhlIHN5c3RlbSByZW1haW5zIGluCiAgICAgICAgICB0aGUgc2h1dHRpbmcgZG93biBzdGF0ZSB0aGUgbWFuYWdlciBvciB0aGUgbWFuYWdlZCBlbGVtZW50IAogICAgICAgICAgbWF5IGF0IGFueSB0aW1lIGNhdXNlIHRoZSByZXNvdXJjZSB0byB0cmFuc2l0aW9uIHRvIHRoZSAKICAgICAgICAgIGxvY2tlZCBzdGF0ZS4iOwogICAgICB9CiAgICB9CiAgfQogIAogIHR5cGVkZWYgQXZhaWxhYmlsaXR5U3RhdHVzIHsKICAgICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgICAgICBlbnVtIElOX1RFU1Q7CiAgICAgICAgICBlbnVtIEZBSUxFRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgIGVudW0gUE9XRVJfT0ZGOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgZW51bSBPRkZfTElORTsgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgIGVudW0gT0ZGX0RVVFk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBlbnVtIERFUEVOREVOQ1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBlbnVtIERFR1JBREVEOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgZW51bSBOT1RfSU5TVEFMTEVEOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgZW51bSBMT0dfRlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgIH0KICB9CiAgCiAgdHlwZWRlZiBDZWxsU3RhdGUgewogICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICBlbnVtIElETEU7CiAgICAgICAgZW51bSBJTkFDVElWRTsgICAgICAgICAgICAgIAogICAgICAgIGVudW0gQUNUSVZFOyAgICAgICAgICAgICAgCiAgICAgfQogIH0KCiAgdHlwZWRlZiBOcnBjaSB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICByZWZlcmVuY2UgIlRTIDM2LjIxMSBzdWJjbGF1c2UgNi4xMSI7CiAgfQoKICB0eXBlZGVmIFRhYyB7CiAgICB0eXBlIGludDMyIHsKICAgICAgcmFuZ2UgMC4uMTY3NzcyMTUgOwogICAgfQogICAgZGVzY3JpcHRpb24gIlRyYWNraW5nIEFyZWEgQ29kZSI7CiAgICByZWZlcmVuY2UgIlRTIDIzLjAwMyBjbGF1c2UgMTkuNC4yLjMiOwogIH0KCiAgdHlwZWRlZiBBbWZSZWdpb25JZCB7CiAgICB0eXBlIHVuaW9uIHsgCiAgICAgIHR5cGUgdWludDggOwogICAgICB0eXBlIHN0cmluZyB7CiAgICAgICAgbGVuZ3RoIDg7CiAgICAgICAgcGF0dGVybiAnWzAxXSonOwogICAgICB9CiAgICB9CiAgICByZWZlcmVuY2UgImNsYXVzZSAyLjEwLjEgb2YgM0dQUCBUUyAyMy4wMDMiOwogIH0KCiAgdHlwZWRlZiBBbWZTZXRJZCB7CiAgICB0eXBlIHVuaW9uIHsgCiAgICAgIHR5cGUgdWludDE2IHsKICAgICAgICByYW5nZSAnMC4uMTAyMyc7CiAgICAgIH0KICAgICAgdHlwZSBzdHJpbmcgewogICAgICAgIGxlbmd0aCA4OwogICAgICAgIHBhdHRlcm4gJ1swMV0qJzsKICAgICAgfQogICAgfQogICAgcmVmZXJlbmNlICJjbGF1c2UgMi4xMC4xIG9mIDNHUFAgVFMgMjMuMDAzIjsKICB9CgogIHR5cGVkZWYgQW1mUG9pbnRlciB7CiAgICB0eXBlIHVuaW9uIHsgCiAgICAgIHR5cGUgdWludDggewogICAgICAgIHJhbmdlICcwLi42Myc7CiAgICAgIH0KICAgICAgdHlwZSBzdHJpbmcgewogICAgICAgIGxlbmd0aCA2OwogICAgICAgIHBhdHRlcm4gJ1swMV0qJzsKICAgICAgfQogICAgfQogICAgcmVmZXJlbmNlICJjbGF1c2UgMi4xMC4xIG9mIDNHUFAgVFMgMjMuMDAzIjsKICB9CiAgICAgICAgCiAgZ3JvdXBpbmcgQW1mSWRlbnRpZmllciB7ICAgICAgICAKICAgIGxlYWYgYW1mUmVnaW9uSWQgewogICAgICB0eXBlIEFtZlJlZ2lvbklkOwogICAgfQogICAgbGVhZiBhbWZTZXRJZCB7CiAgICAgIHR5cGUgQW1mU2V0SWQ7CiAgICB9CiAgICBsZWFmIGFtZlBvaW50ZXIgewogICAgICB0eXBlIEFtZlBvaW50ZXI7CiAgICB9IAogICAgZGVzY3JpcHRpb24gIlRoZSBBTUZJIGlzIGNvbnN0cnVjdGVkIGZyb20gYW4gQU1GIFJlZ2lvbiBJRCwgCiAgICAgIGFuIEFNRiBTZXQgSUQgYW5kIGFuIEFNRiBQb2ludGVyLiAKICAgICAgVGhlIEFNRiBSZWdpb24gSUQgaWRlbnRpZmllcyB0aGUgcmVnaW9uLCAKICAgICAgdGhlIEFNRiBTZXQgSUQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgQU1GIFNldCB3aXRoaW4gdGhlIEFNRiBSZWdpb24sIGFuZCAKICAgICAgdGhlIEFNRiBQb2ludGVyIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIEFNRiB3aXRoaW4gdGhlIEFNRiBTZXQuICI7IAogIH0gICAgCgovLyB0eXBlIGRlZmluaXRpb25zIGVzcGVjaWFsbHkgZm9yIGNvcmUgTkZzCgogIHR5cGVkZWYgTmZUeXBlIHsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIE5SRjsKICAgICAgZW51bSBVRE07CiAgICAgIGVudW0gQU1GOwogICAgICBlbnVtIFNNRjsKICAgICAgZW51bSBBVVNGOwogICAgICBlbnVtIE5FRjsKICAgICAgZW51bSBQQ0Y7CiAgICAgIGVudW0gU01TRjsKICAgICAgZW51bSBOU1NGOwogICAgICBlbnVtIFVEUjsKICAgICAgZW51bSBMTUY7CiAgICAgIGVudW0gR01MQzsKICAgICAgZW51bSA1R19FSVI7CiAgICAgIGVudW0gU0VQUDsKICAgICAgZW51bSBVUEY7CiAgICAgIGVudW0gTjNJV0Y7CiAgICAgIGVudW0gQUY7CiAgICAgIGVudW0gVURTRjsKICAgICAgZW51bSBCU0Y7CiAgICAgIGVudW0gQ0hGOwogICAgfSAgICAgICAgICAKICB9CiAgCiAgdHlwZWRlZiBOb3RpZmljYXRpb25UeXBlIHsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIE4xX01FU1NBR0VTOwogICAgICBlbnVtIE4yX0lORk9STUFUSU9OOwogICAgICBlbnVtIExPQ0FUSU9OX05PVElGSUNBVElPTjsKICAgIH0gICAgICAKICB9CiAgCiAgdHlwZWRlZiBMb2FkIHsKICAgIGRlc2NyaXB0aW9uICJMYXRlc3Qga25vd24gbG9hZCBpbmZvcm1hdGlvbiBvZiB0aGUgTkYsIHBlcmNlbnRhZ2UgIjsKICAgIHR5cGUgdWludDggewogICAgICByYW5nZSAwLi4xMDA7CiAgICB9CiAgfQoKICB0eXBlZGVmIE4xTWVzc2FnZUNsYXNzIHsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIDVHTU07CiAgICAgIGVudW0gU007CiAgICAgIGVudW0gTFBQOwogICAgICBlbnVtIFNNUzsgCiAgICB9ICAgICAgCiAgfQogIAogIHR5cGVkZWYgTjJJbmZvcm1hdGlvbkNsYXNzIHsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIFNNOwogICAgICBlbnVtIE5SUFBBOwogICAgICBlbnVtIFBXUzsKICAgICAgZW51bSBQV1NfQkNBTDsKICAgICAgZW51bSBQV1NfUkY7CiAgICB9ICAgICAgICAgICAgICAKICB9CiAgCiAgZ3JvdXBpbmcgRGVmYXVsdE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiB7CiAgICAKICAgIGxlYWYgbm90aWZpY2F0aW9uVHlwZSB7CiAgICAgIHR5cGUgTm90aWZpY2F0aW9uVHlwZTsKICAgIH0KICAgIAogICAgbGVhZiBjYWxsYmFja1VyaSB7CiAgICAgIHR5cGUgaW5ldDp1cmk7CiAgICB9CiAgICAKICAgIGxlYWYgbjFNZXNzYWdlQ2xhc3MgewogICAgICB0eXBlIE4xTWVzc2FnZUNsYXNzOwogICAgfQogICAgCiAgICBsZWFmIG4ySW5mb3JtYXRpb25DbGFzcyB7CiAgICAgIHR5cGUgTjJJbmZvcm1hdGlvbkNsYXNzOwogICAgfSAgICAKICB9ICAKICAgICAgICAKICBncm91cGluZyBJcHY0QWRkcmVzc1JhbmdlIHsKICBsZWFmIHN0YXJ0IHsKICAgIHR5cGUgaW5ldDppcHY0LWFkZHJlc3M7CiAgICB9CiAgbGVhZiBlbmQgewogICAgdHlwZSBpbmV0OmlwdjQtYWRkcmVzczsKICAgIH0gICAgCiAgfQogICAgCiAgZ3JvdXBpbmcgSXB2NlByZWZpeFJhbmdlIHsKICBsZWFmIHN0YXJ0IHsKICAgIHR5cGUgaW5ldDppcHY2LXByZWZpeDsKICAgIH0KICBsZWFmIGVuZCB7CiAgICB0eXBlIGluZXQ6aXB2Ni1wcmVmaXg7CiAgICB9ICAgIAogIH0KICAgICAKICB0eXBlZGVmIE5zaUlkIHsKICAgIHR5cGUgc3RyaW5nOwogIH0KICAgIAogIHR5cGVkZWYgVWVNb2JpbGl0eUxldmVsIHsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIFNUQVRJT05BUlk7CiAgICAgIGVudW0gTk9NQURJQzsKICAgICAgZW51bSBSRVNUUklDVEVEX01PQklMSVRZOwogICAgICBlbnVtIEZVTExZX01PQklMSVRZOwogICAgfQogIH0KICAgICAgCiAgdHlwZWRlZiBSZXNvdXJjZVNoYXJpbmdMZXZlbCB7CiAgICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICAgIGVudW0gU0hBUkVEOwogICAgICAgIGVudW0gTk9UX1NIQVJFRDsKICAgICAgfQogIH0KICAgICAgCiAgdHlwZWRlZiBUeERpcmVjdGlvbiB7CiAgICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICAgIGVudW0gREw7CiAgICAgICAgZW51bSBVTDsKICAgICAgICBlbnVtIERMX0FORF9VTDsKICAgICAgfQogIH0KICAgICAgCiAgZ3JvdXBpbmcgQWRkcmVzc1dpdGhWbGFuIHsKICAgIGxlYWYgaXBBZGRyZXNzIHsKICAgICAgdHlwZSBpbmV0OmlwLWFkZHJlc3M7ICAgCiAgICB9CiAgICBsZWFmIHZsYW5JZCB7CiAgICAgICB0eXBlIHVpbnQxNjsKICAgIH0gIAogIH0KICAKICB0eXBlZGVmIERpc3Rpbmd1aXNoZWROYW1lIHsgICAgLy8gVE9ETyBpcyB0aGlzIGVxdWl2YWxlbnQgdG8gVFMgMzIuMzAwID8KICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKFthLXpBLVpdW2EtekEtWjAtOS1dKj0oXFwoIHwjfFxcfD58PHw7fCJ8XCt8LHxbYS1mQS1GMC05XXsyfSl8W15cXD48OyIrLCMgXSknCiAgICAgICAgKyAnKChcXCggfCN8XFx8Pnw8fDt8InxcK3wsfFthLWZBLUYwLTldezJ9KXxbXlxcPjw7IissXSkqJwogICAgICAgICsgJyhcXCggfCN8XFx8Pnw8fDt8InxcK3wsfFthLWZBLUYwLTldezJ9KXxbXlxcPjw7IissIF0pKT8nCiAgICAgICAgKyAnWyxcK10pKlthLXpBLVpdW2EtekEtWjAtOS1dKj0oXFwoIHwjfFxcfD58PHw7fCJ8XCt8LHxbYS1mQS1GMC05XXsyfSl8W15cXD48OyIrLCMgXSknCiAgICAgICAgKyAnKChcXCggfCN8XFx8Pnw8fDt8InxcK3wsfFthLWZBLUYwLTldezJ9KScKICAgICAgICArICd8W15cXD48OyIrLF0pKihcXCggfCN8XFx8Pnw8fDt8InxcK3wsfFthLWZBLUYwLTldezJ9KXxbXlxcPjw7IissIF0pKT8nOyAgCiAgICB9CiAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgaW50ZXJuYXRpb25hbCBzdGFuZGFyZCBmb3IgdGhlIHJlcHJlc2VudGF0aW9uIAogICAgICBvZiBEaXN0aW5ndWlzaGVkIE5hbWUgKFJGQyA0NTEyKS4gCiAgICAgIFRoZSBmb3JtYXQgb2YgdGhlIERpc3Rpbmd1aXNoZWROYW1lIFJFR0VYIGlzOgogICAgICB7QXR0cmlidXRlVHlwZSA9IEF0dHJpYnV0ZVZhbHVlfSAgIAoKICAgICAgQXR0cmlidXRlVHlwZSBjb25zaXN0cyBvZiBhbHBoYW51bWVyaWMgYW5kIGh5cGhlbiAoT0lEcyBub3QgYWxsb3dlZCkuIAogICAgICBBbGwgb3RoZXIgY2hhcmFjdGVycyBhcmUgcmVzdHJpY3RlZC4KICAgICAgVGhlIEF0dHJpYnV0ZSB2YWx1ZSBjYW5ub3QgY29udGFpbiBjb250cm9sIGNoYXJhY3RlcnMgb3IgdGhlIAogICAgICAgIGZvbGxvd2luZyBjaGFyYWN0ZXJzIDogXFwgPiA8IDsgXCIgKyAsIChDb21tYSkgYW5kIFdoaXRlIHNwYWNlCiAgICAgIFRoZSBBdHRyaWJ1dGUgdmFsdWUgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGlmIHRoZXkgCiAgICAgICAgYXJlIGV4Y2FwZWQgOiBcXCA+IDwgOyBcIiArICwgKENvbW1hKSBhbmQgV2hpdGUgc3BhY2UKICAgICAgVGhlIEF0dHJpYnV0ZSB2YWx1ZSBjYW4gY29udGFpbiBjb250cm9sIGNoYXJhY3RlcnMgaWYgaXRzIGFuIGVzY2FwZWQgCiAgICAgICAgZG91YmxlIGRpZ2l0IGhleCBudW1iZXIuCiAgICAgICAgRXhhbXBsZXMgY291bGQgYmUgCiAgICAgICAgICBVSUQ9bm9ib2R5QGV4YW1wbGUuY29tLERDPWV4YW1wbGUsREM9Y29tCiAgICAgICAgICAgIENOPUpvaG4gU21pdGgsT1U9U2FsZXMsTz1BQ01FIExpbWl0ZWQsTD1Nb2FiLFNUPVV0YWgsQz1VUyI7CiAgICByZWZlcmVuY2UgICJSRkMgNDUxMiBMaWdodHdlaWdodCBEaXJlY3RvcnkgQWNjZXNzIFByb3RvY29sIChMREFQKToKICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBJbmZvcm1hdGlvbiBNb2RlbHMiOwogIH0gLy8gcmVjaGVjayByZWdleHAgaXQgZG9lc24ndCBoYW5kbGUgcG9zaXggWzpjbnRybDpdCiAKICB0eXBlZGVmIFFPZmZzZXRSYW5nZSAgewogICAgdHlwZSBpbnQ4IHsgCiAgICAgIHJhbmdlICItMjQgfCAtMjIgfCAtMjAgfCAtMTggfCAtMTYgfCAtMTQgfCAtMTIgfCAtMTAgfCAtOCB8IC02IHwgIiArCiAgICAgICAgIiAtNSB8IC00IHwgLTMgfCAtMiB8IC0xIHwgMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDggfCAxMCB8ICIgKwogICAgICAgICIgMTIgfCAxNCB8IDE2IHwgMTggfCAyMCB8IDIyIHwgMjQiOyAKICAgIH0KICAgIHVuaXRzIGRCOwogIH0KfQ==
+_3gpp-common-yang-extensions   urn:3gpp:sa5:_3gpp-common-yang-extensions       \N      []      2023-09-18      bW9kdWxlIF8zZ3BwLWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewogIHlhbmctdmVyc2lvbiAxLjE7CiAgbmFtZXNwYWNlIHVybjozZ3BwOnNhNTpfM2dwcC1jb21tb24teWFuZy1leHRlbnNpb25zIDsKICBwcmVmaXggeWV4dDNncHAgOwoKICBvcmdhbml6YXRpb24gIjNHUFAgU0E1IjsKICBjb250YWN0ICJodHRwczovL3d3dy4zZ3BwLm9yZy9EeW5hUmVwb3J0L1RTRy1XRy0tUzUtLW9mZmljaWFscy5odG0/SXRlbWlkPTQ2NCI7CgogIGRlc2NyaXB0aW9uICJUaGUgbW9kdWxlIGRlZmluZXMgWUFORyBleHRlbnNpb25zIG5lZWRlZCAKICAgIDNHUFAgWUFORyBtb2RlbGluZy4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMTkgM0dQUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICBFeHRlbnNpb25zIE1VU1QgYmUgZGVmaW5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGluIHRoZQogICAgZGVzY3JpcHRpb24gc3RhdGVtZW50OgogICAgICAgIC0gV2hhdCBpcyB0aGlzIHN0YXRlbWVudC4KICAgICAgICAtIE5ld2xpbmUsCiAgICAgICAgLSBUaGlzIHN0YXRlbWVudCBjYW4gYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlIHh4eCBzdGF0ZW1lbnRzIHdpdGgKICAgICAgICBjYXJkaW5hbGl0eSB4Li55LgogICAgICAgIC0gVGhpcyBzdGF0ZW1lbnQgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyBzdWJzdGF0ZW1lbnRzIHdpdGgKICAgICAgICBjYXJkaW5hbGl0eSB4Li55LgogICAgICAgIC0gTmV3bGluZQogICAgICAgIC0gSXMgY2hhbmdpbmcgdGhpcyBzdGF0ZW1lbnQgYW4gZWRpdG9yaWFsLCBCQyhiYWNrd2FyZHMgY29tcGF0aWJsZSkgCiAgICAgICAgb3IgTkJDKG5vbi1CQykgY2hhbmdlPwogICAgICAgIC0gTmV3bGluZS4KICAgICAgICAtIFRoZSBhcmd1bWVudCBpdHMgbWVhbmluZyBhbmQgdHlwZS4gUHJlZmVyYWJseSB1c2UgWUFORyB0eXBlcyBhbmQKICAgICAgICAgIGNvbnN0cmFpbnRzIHRvIGRlZmluZSB0aGUgYXJndW1lbnQncyB0eXBlLgoKICAgIEFueSBleHRlbnNpb24gc3RhdGVtZW50IGNhbiBiZSBhZGRlZCB3aXRoIGEKICAgIGRldmlhdGlvbi9kZXZpYXRlIGFkZCBzdGF0ZW1lbnQuIEluIHRoaXMgY2FzZSB0aGUgcmVzdHJpY3Rpb24gYWJvdXQKICAgIHRoZSBwYXJlbnQgc3RhdGVtZW50IG9mIHRoZSBleHRlbnNpb24gU0hBTEwgYmUgZXZhbHVhdGVkIGJhc2VkIG9uIHRoZQogICAgdGFyZ2V0IG9mIHRoZSBkZXZpYXRpb24gc3RhdGVtZW50LgoKICAgIFN1cHBvcnQgZm9yIHRoaXMgbW9kdWxlIGRvZXMgbm90IG1lYW4gdGhhdCBhIFlBTkcgc2VydmVyIGltcGxlbWVudHMKICAgIHN1cHBvcnQgZm9yIGVhY2ggb2YgdGhlc2UgZXh0ZW5zaW9ucy4KICAgIEltcGxlbWVudGVycyBvZiBlYWNoIHNwZWNpZmljIG1vZHVsZSB1c2luZyBhbiBleHRlbnNpb25zIE1VU1QgY2hlY2sKICAgIGlmIHRoZSBzZXJ2ZXIgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgdXNlZCBleHRlbnNpb24uCiAgICBOb3RlOiBtb2R1bGVzIHVzZSBtYW55IGV4dGVuc2lvbnMgd2hpY2ggaW5kaXZpZHVhbAogICAgaW1wbGVtZW50YXRpb25zIE1BWSBvciBNQVkgTk9UIHN1cHBvcnQuCiAgICBJZiBzdXBwb3J0IGZvciBhbiBleHRlbnNpb24gaXMgbWlzc2luZyB0aGUgZXh0ZW5zaW9uIHN0YXRlbWVudCBuZWVkcwogICAgaW5kaXZpZHVhbCBoYW5kbGluZyBvciBpdCBTSE9VTEQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBtb2R1bGUgdXNpbmcKICAgIHRoZSBleHRlbnNpb24gZS5nLiB3aXRoIGEgZGV2aWF0aW9uLgogICAgQ29weXJpZ2h0IDIwMjMsIDNHUFAgT3JnYW5pemF0aW9uYWwgUGFydG5lcnMgKEFSSUIsIEFUSVMsIENDU0EsIEVUU0ksIFRTRFNJLCAKICAgIFRUQSwgVFRDKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOwogIHJlZmVyZW5jZSAiM0dQUCBUUyAyOC42MjMKICAgICAgR2VuZXJpYyBOZXR3b3JrIFJlc291cmNlIE1vZGVsIChOUk0pCiAgICAgIEludGVncmF0aW9uIFJlZmVyZW5jZSBQb2ludCAoSVJQKTsKICAgICAgU29sdXRpb24gU2V0IChTUykgZGVmaW5pdGlvbnMKICAgICAgM0dQUCBUUyAyOC42MjMiOwoKICByZXZpc2lvbiAyMDIzLTA5LTE4IHsgcmVmZXJlbmNlIENSLTAyNzEgOyB9IAogIHJldmlzaW9uIDIwMjItMTAtMjAgeyByZWZlcmVuY2UgQ1ItMDE5NjsgICB9CiAgcmV2aXNpb24gMjAxOS0wNi0yMyB7IHJlZmVyZW5jZSAiSW5pdGlhbCB2ZXJzaW9uIjsgICB9CgogIGV4dGVuc2lvbiBub3ROb3RpZnlhYmxlIHsKICAgIGRlc2NyaXB0aW9uCiAgICAgICJJbmRpY2F0ZXMgdGhhdCBkYXRhIGNoYW5nZSBub3RpZmljYXRpb25zIHNoYWxsIG5vdCBiZSBzZW50IAogICAgICBmb3IgdGhpcyBhdHRyaWJ1dGUuIElmIHRoZSBleHRlbnNpb24gaXMgbm90IHByZXNlbnQgYW5kIG90aGVyIAogICAgICBjb25kaXRpb25zIGFyZSBmdWxmaWxsZWQgZGF0YSBjaGFuZ2Ugbm90aWZpY2F0aW9uIHNob3VsZCBiZSBzZW50LgogICAgICBJZiBhIGxpc3Qgb3IgY29udGFpbmVyIGFscmVhZHkgaGFzIHRoZSBub3ROb3RpZnlhYmxlIAogICAgICBleHRlbnNpb24sIHRoYXQgaXMgYWxzbyB2YWxpZCBmb3IgYWxsIGNvbnRhaW5lZCBkYXRhIG5vZGVzLgoKICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgYSBsZWFmLCBsZWFmLWxpc3QsIGxpc3QsCiAgICAgIGNvbnRhaW5lciBzdGF0ZW1lbnQgdGhhdCBpcyBjb250YWluZWQgd2l0aGluIHRoZSAnYXR0cmlidXRlcycgCiAgICAgIGNvbnRhaW5lciBvZiBhbiBJT0MgYW5kIHRoYXQgcmVwcmVzZW50cyBhbiBhdHRyaWJ1dGUgb3Igc3ViLXBhcnRzIG9mIAogICAgICBhbiBhdHRyaWJ1dGUgLgogICAgICAKICAgICAgWmVybyBvciBvbmUgbm90Tm90aWZ5YWJsZSBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBwZXIgcGFyZW50IHN0YXRlbWVudC4KICAgICAgTk8gc3Vic3RhdGVtZW50cyBhcmUgYWxsb3dlZC4KICAgICAgICAgICAgCiAgICAgIEFkZGluZyB0aGlzIHN0YXRlbWVudCBpcyBhbiBOQkMgY2hhbmdlLCByZW1vdmluZyBpdCBpcyBCQy4iOwogIH0KCiAgZXh0ZW5zaW9uIGluVmFyaWFudCB7CiAgICBkZXNjcmlwdGlvbgogICAgICAiSW5kaWNhdGVzIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgZGF0YSBub2RlIGNhbiBvbmx5IGJlIHNldCB3aGVuIHRoZSBsaXN0IAogICAgICBkYXRhIG5vZGUgcmVwcmVzZW50aW5nIHRoZSBjb250YWluaW5nIG9iamVjdChNT0kpIGlzIGNyZWF0ZWQuCiAgICAgIFRoZSBhYm92ZSBzdGF0ZW1lbnQgaW4gWUFORyB0ZXJtcyBtZWFucywgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSBkYXRhIAogICAgICBub2RlIGNhbiBvbmx5IGJlIHNldCB3aGVuIHRoZSBsaXN0IGVudHJ5IHRoYXQgaXMgdGhlIHBhcmVudCBvZiB0aGUgCiAgICAgIHJlc3RyaWN0ZWQgbm9kZSdzIGFuY2VzdG9yIGNvbnRhaW5lciBuYW1lZCAnYXR0cmlidXRlcycgaXMgYmVpbmcgY3JlYXRlZC4gCiAgICAgIFRvIGNoYW5nZSB0aGUgdmFsdWUgYWZ0ZXIgdGhhdCwgdGhlIG1lbnRpb25lZCAKICAgICAgbGlzdCBkYXRhIG5vZGUgbXVzdCBiZSBkZWxldGVkIGFuZCByZWNyZWF0ZWQgd2l0aCB0aGUgcmVzdHJpY3RlZCBkYXRhIG5vZGUKICAgICAgaGF2aW5nIHRoZSBuZXcgdmFsdWUuCgogICAgICBJZiBhIGxpc3Qgb3IgY29udGFpbmVyIGFscmVhZHkgaGFzIHRoZSBpblZhcmlhbnQgCiAgICAgIGV4dGVuc2lvbiwgdGhhdCBpcyBhbHNvIHZhbGlkIGZvciBhbGwgY29udGFpbmVkIGRhdGEgbm9kZXMuCgogICAgICBJdCBpcyB1bm5lY2Vzc2FyeSB0byB1c2UgYW5kIE1VU1QgTk9UIGJlIHVzZWQgZm9yIGtleSBsZWFmcy4KCiAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgbGVhZiwgbGVhZi1saXN0LCBsaXN0IAogICAgICBzdGF0ZW1lbnQgdGhhdCBpcyBjb25maWc9dHJ1ZS4KICAgICAgWmVybyBvciBvbmUgaW5WYXJpYW50IHN0YXRlbWVudCBpcyBhbGxvd2VkIHBlciBwYXJlbnQgc3RhdGVtZW50LgogICAgICBOTyBzdWJzdGF0ZW1lbnRzIGFyZSBhbGxvd2VkLgogICAgICAgICAgICAKICAgICAgQWRkaW5nIHRoaXMgc3RhdGVtZW50IGlzIGFuIE5CQyBjaGFuZ2UsIHJlbW92aW5nIGl0IGlzIEJDLiI7CiAgfQoKICBleHRlbnNpb24gaW5pdGlhbC12YWx1ZSB7CiAgICBkZXNjcmlwdGlvbiAiU3BlY2lmaWVzIGEgdmFsdWUgdGhhdCB0aGUgc3lzdGVtIHdpbGwgc2V0IGZvciBhIGxlYWYKICAgICAgbGVhZi1saXN0IGlmIGEgdmFsdWUgaXMgbm90IHNwZWNpZmllZCBmb3IgaXQgd2hlbiBpdHMgcGFyZW50IGxpc3QKICAgICAgb3IgY29udGFpbmVyIGlzIGNyZWF0ZWQuIFRoZSB2YWx1ZSBoYXMgbm8gZWZmZWN0IGluIGFueSBvdGhlcgogICAgICBtb2RpZmljYXRpb24gZS5nLiBjaGFuZ2luZyBvciByZW1vdmluZyB0aGUgdmFsdWUuCgogICAgICBUaGUgZGVzY3JpcHRpb24gc3RhdGVtZW50IG9mIHRoZSBwYXJlbnQgc3RhdGVtZW50IFNIT1VMRCBjb250YWluCiAgICAgIHRoZSBsYWJlbCAnSW5pdGlhbC12YWx1ZTogJyBmb2xsb3dlZCBieSB0aGUgdGV4dCBmcm9tIHRoZSBhcmd1bWVudC4KCiAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgbGVhZiBvciBsZWFmLWxpc3QuCiAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBOT1QgYmUgcHJlc2VudCBpZiB0aGUgbGVhZiBvciB0aGUgbGVhZi1saXN0IAogICAgICBoYXMgYSBkZWZhdWx0IHN0YXRlbWVudCBvciB0aGUgdHlwZSB1c2VkIGZvciB0aGUgZGF0YSBub2RlIAogICAgICBoYXMgYSBkZWZhdWx0IHZhbHVlLgogICAgICBUaGUgc3RhdGVtZW50IE1VU1QgTk9UIGJlIHVzZWQgZm9yIGNvbmZpZz1mYWxzZSBkYXRhIG9yIGluIGFuIAogICAgICBhY3Rpb24sIHJwYyBvciBub3RpZmljYXRpb24uCiAgICAgIFplcm8gb3Igb25lIGluaXRpYWwtdmFsdWUgc3RhdGVtZW50cyBhcmUgYWxsb3dlZCBmb3IgYSBsZWFmIHBhcmVudAogICAgICBzdGF0ZW1lbnQuIFplcm8gb3IgbW9yZSBpbml0aWFsLXZhbHVlIHN0YXRlbWVudHMgYXJlIGFsbG93ZWQgZm9yIGEKICAgICAgbGVhZi1saXN0IHBhcmVudCBzdGF0ZW1lbnQuIElmIHRoZSBsZWFmLWxpc3QgaXMgb3JkZXJlZC1ieSB1c2VyLCB0aGUKICAgICAgaW5pdGlhbCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIFlBTkcgZGVmaW5pdGlvbi4KICAgICAgTk8gc3Vic3RhdGVtZW50cyBhcmUgYWxsb3dlZC4KCiAgICAgIEFsd2F5cyBjb25zaWRlciB1c2luZyBhIFlBTkctZGVmYXVsdCBzdGF0ZW1lbnQgaW5zdGVhZC4KCiAgICAgIE1vZGlmaWNhdGlvbiBvZiB0aGUgaW5pdGlhbC12YWx1ZSBpcyBhIG5vbi1iYWNrd2FyZHMtY29tcGF0aWJsZSBjaGFuZ2UuCgogICAgICBUaGUgYXJndW1lbnQgc3BlY2lmaWVzIGEgc2luZ2xlIGluaXRpYWwgdmFsdWUgZm9yIGEgbGVhZiBvciBsZWFmLWxpc3QuCiAgICAgIFRoZSB2YWx1ZSBNVVNUIGJlIHBhcnQgb2YgdGhlIHZhbHVlc3BhY2Ugb2YgdGhlIGxlYWYvbGVhZi1saXN0LgogICAgICBJdCBmb2xsb3dzIHRoZSBzYW1lIHJ1bGVzIGFzIHRoZSBhcmd1bWVudCBvZiB0aGUgZGVmYXVsdCBzdGF0ZW1lbnQuIjsKCiAgICBhcmd1bWVudCAiaW5pdGlhbC12YWx1ZSI7CiAgfQp9
+_3gpp-common-yang-types        urn:3gpp:sa5:_3gpp-common-yang-types    \N      []      2023-11-06      bW9kdWxlIF8zZ3BwLWNvbW1vbi15YW5nLXR5cGVzIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOjNncHA6c2E1Ol8zZ3BwLWNvbW1vbi15YW5nLXR5cGVzIjsKICBwcmVmaXggInR5cGVzM2dwcCI7CiAgCiAgaW1wb3J0IGlldGYtaW5ldC10eXBlcyB7IHByZWZpeCBpbmV0OyB9CiAgaW1wb3J0IGlldGYteWFuZy10eXBlcyB7IHByZWZpeCB5YW5nOyB9CiAgaW1wb3J0IF8zZ3BwLWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggeWV4dDNncHA7IH0KCiAgb3JnYW5pemF0aW9uICIzR1BQIFNBNSI7CiAgY29udGFjdCAiaHR0cHM6Ly93d3cuM2dwcC5vcmcvRHluYVJlcG9ydC9UU0ctV0ctLVM1LS1vZmZpY2lhbHMuaHRtP0l0ZW1pZD00NjQiOwogIGRlc2NyaXB0aW9uICJUaGUgbW9kZWwgZGVmaW5lcyBhIFlBTkcgbWFwcGluZyBvZiB0aGUgdG9wIGxldmVsIAogICAgaW5mb3JtYXRpb24gY2xhc3NlcyB1c2VkIGZvciBtYW5hZ2VtZW50IG9mIDVHIG5ldHdvcmtzIGFuZCAKICAgIG5ldHdvcmsgc2xpY2luZy4KICAgIENvcHlyaWdodCAyMDIzLCAzR1BQIE9yZ2FuaXphdGlvbmFsIFBhcnRuZXJzIChBUklCLCBBVElTLCBDQ1NBLCBFVFNJLCBUU0RTSSwgCiAgICBUVEEsIFRUQykuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKICByZWZlcmVuY2UgIjNHUFAgVFMgMjguNjIzIjsKCiAgcmV2aXNpb24gMjAyMy0xMS0wNiB7IHJlZmVyZW5jZSBDUi0wMzA1OyB9CiAgcmV2aXNpb24gMjAyMy0wOS0xOCB7IHJlZmVyZW5jZSBDUi0wMjcxIDsgfSAKICByZXZpc2lvbiAyMDIzLTA4LTA5IHsgcmVmZXJlbmNlIENSLTAyNjY7IH0KICByZXZpc2lvbiAyMDIzLTA1LTEwIHsgcmVmZXJlbmNlIENSLTAyNTA7IH0KICByZXZpc2lvbiAyMDIzLTAyLTE0IHsgcmVmZXJlbmNlIENSLTAyMzQ7IH0KICByZXZpc2lvbiAyMDIyLTExLTA0IHsgcmVmZXJlbmNlICJDUi0wMTk0IjsgfQogIHJldmlzaW9uIDIwMjItMTAtMjQgeyByZWZlcmVuY2UgQ1ItMDE5NjsgIH0KICByZXZpc2lvbiAyMDIyLTA3LTI2IHsgcmVmZXJlbmNlICJDUi0wMTgwIiA7IH0KICByZXZpc2lvbiAyMDIyLTAyLTA5IHsgcmVmZXJlbmNlICJDUi0wMTQ0IjsgfQogIHJldmlzaW9uIDIwMjEtMTEtMDEgeyByZWZlcmVuY2UgIkNSLTAxNDEiOyB9CiAgCiAgcmV2aXNpb24gMjAyMS0wOS0zMCB7CiAgICBkZXNjcmlwdGlvbiAiQWRkZWQgTG9uZ2l0dWRlLCBMYXRpdHVkZSwgVGVudGhPZkRlZ3JlZXMsIE9uT2ZmLiI7CiAgICByZWZlcmVuY2UgIkNSLTAxMzgiOwogIH0KCiAgcmV2aXNpb24gMjAyMC0xMS0wNiB7CiAgICBkZXNjcmlwdGlvbiAiUmVtb3ZlZCBpbmNvcnJlY3QgUy1OU1NBSSBkZWZpbml0aW9ucy4iOwogICAgcmVmZXJlbmNlICJDUi0wMTE4IjsKICB9CgogIHJldmlzaW9uIDIwMjAtMDMtMTAgewogICAgZGVzY3JpcHRpb24gIlJlbW92ZWQgZmF1bHR5IHdoZW4gc3RhdGVtZW50cy4iOwogICAgcmVmZXJlbmNlICJTUC0yMDAyMjkiOwogIH0KIAogIHJldmlzaW9uIDIwMTktMTAtMjUgewogICAgZGVzY3JpcHRpb24gIkFkZGVkIE1hbmFnZWRORlByb2ZpbGUuIjsKICAgIHJlZmVyZW5jZSAiUzUtMTk0NDU3IjsKICB9CgogIHJldmlzaW9uIDIwMTktMTAtMTYgewogICAgZGVzY3JpcHRpb24gIkFkZGVkIFNBUCBhbmQgdXNhZ2VTdGF0ZS4iOwogICAgcmVmZXJlbmNlICJTNS0xOTM1MTgiOwogIH0KCiAgcmV2aXNpb24gMjAxOS0wNi0yMyB7CiAgICByZWZlcmVuY2UgICJJbml0aWFsIHZlcnNpb24uIjsKICB9CgogIHR5cGVkZWYgRW5hYmxlZERpc2FibGVkIHsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIERJU0FCTEVEIDsKICAgICAgZW51bSBFTkFCTEVEIDsKICAgIH0KICB9CiAgCiAgZ3JvdXBpbmcgbmFtZVZhbHVlUGFpciB7CiAgICBsZWFmIG5hbWUgeyB0eXBlIHN0cmluZzsgfQogICAgbGVhZiB2YWx1ZSB7IHR5cGUgc3RyaW5nOyB9CiAgfQogIAogIGdyb3VwaW5nIFByb2Nlc3NNb25pdG9yR3JwIHsKICAgIGRlc2NyaXB0aW9uICJQcm92aWRlcyBhdHRyaWJ1dGVzIHRvIG1vbml0b3IgdGhlIHByb2dyZXNzIG9mIHByb2Nlc3NlcyAKICAgICAgd2l0aCBzcGVjaWZpYyBwdXJwb3NlIGFuZCBsaW1pdGVkIGxpZmV0aW1lIHJ1bm5pbmcgb24gTW5TIHByb2R1Y2Vycy4gCiAgICAgIEl0IG1heSBiZSB1c2VkIGFzIGRhdGEgdHlwZSBmb3IgZGVkaWNhdGVkIHByb2dyZXNzIG1vbml0b3IgYXR0cmlidXRlcyAKICAgICAgd2hlbiBzcGVjaWZ5aW5nIHRoZSBtYW5hZ2VtZW50IHJlcHJlc2VudGF0aW9uIG9mIHRoZXNlIHByb2Nlc3Nlcy4gCiAgICAgIFRoZSBhdHRyaWJ1dGVzIGluIHRoaXMgY2xhdXNlIGFyZSBkZWZpbmVkIGluIGEgZ2VuZXJpYyB3YXkuIAogICAgICBGb3Igc29tZSBhdHRyaWJ1dGVzIHNwZWNpYWxpc2F0aW9ucyBtYXkgYmUgcHJvdmlkZWQgd2hlbiBzcGVjaWZ5aW5nIGEgCiAgICAgIGNvbmNyZXRlIHByb2Nlc3MgcmVwcmVzZW50YXRpb24uCgogICAgICBJZiBhIG1hbmFnZW1lbnQgb3BlcmF0aW9uIG9uIHNvbWUgSU9DcyB0cmlnZ2VycyBhbiBhc3NvY2lhdGVkIAogICAgICBhc3luY2hyb25vdXMgcHJvY2VzcyAod2hvc2UgcHJvZ3Jlc3Mgc2hhbGwgYmUgbW9uaXRvcmVkKSwgdGhpcyBzaG91bGQgCiAgICAgIGFsc28gcmVzdWx0IGluIGNyZWF0aW5nIGFuIGF0dHJpYnV0ZSBuYW1lZCAncHJvY2Vzc01vbml0b3InIChvZiB0eXBlIAogICAgICAnUHJvY2Vzc01vbml0b3InKSBpbiB0aGVzZSBJT0MocykuIFRoZSBwcm9jZXNzTW9uaXRvciBhdHRyaWJ1dGUgbWF5IGJlIAogICAgICBhY2NvbXBhbmllZCBieSB1c2UtY2FzZSBzcGVjaWZpYyBhZGRpdGlvbmFsIGRhdGEgaXRlbXMuCgogICAgICBUaGUgcHJvZ3Jlc3Mgb2YgdGhlIHByb2Nlc3MgaXMgZGVzY3JpYmVkIGJ5IHRoZSAnc3RhdHVzJyBhbmQgCiAgICAgICdwcm9ncmVzc1BlcmNlbnRhZ2UnIGF0dHJpYnV0ZXMuIEFkZGl0aW9uYWwgdGV4dHVhbCBxdWFsaWZpY2F0aW9ucyBmb3IgCiAgICAgIHRoZSAnc3RhdHVzJyBhdHRyaWJ1dGUgbWF5IGJlIHByb3ZpZGVkIGJ5IHRoZSAncHJvZ3Jlc3NTdGF0ZUluZm8nIGFuZCAKICAgICAgJ3Jlc3VsdFN0YXRlSW5mbycgYXR0cmlidXRlcy4KCiAgICAgIFdoZW4gdGhlIHByb2Nlc3MgaXMgaW5zdGFudGlhdGVkLCB0aGUgJ3N0YXR1cycgaXMgc2V0IHRvICdOT1RfUlVOTklORycgCiAgICAgIGFuZCB0aGUgJ3Byb2dyZXNzUGVyY2VudGFnZScgdG8gJzAnLiBUaGUgTW5TIHByb2R1Y2VyIGRlY2lkZXMgd2hlbiB0byAKICAgICAgc3RhcnQgZXhlY3V0aW5nIHRoZSBwcm9jZXNzIGFuZCB0byB0cmFuc2l0aW9uIGludG8gdGhlICdSVU5OSU5HJyBzdGF0ZS4gCiAgICAgIFRoaXMgdGltZSBpcyBjYXB0dXJlZCBpbiB0aGUgJ3N0YXJ0VGltZScgYXR0cmlidXRlLiBBbHRlcm5hdGl2ZWx5LCB0aGUgCiAgICAgIHByb2Nlc3MgbWF5IHN0YXJ0IHRvIGV4ZWN1dGUgZGlyZWN0bHkgdXBvbiBpdHMgaW5zdGFudGlhdGlvbi4gT25lIAogICAgICBhbHRlcm5hdGl2ZSBtdXN0IGJlIHNlbGVjdGVkIHdoZW4gdXNpbmcgdGhpcyBkYXRhIHR5cGUuCgogICAgICBEdXJpbmcgdGhlICdSVU5OSU5HJyBzdGF0ZSB0aGUgJ3Byb2dyZXNzUGVyY2VudGFnZScgYXR0cmlidXRlIG1heSBiZSAKICAgICAgcmVwZWF0ZWRseSB1cGRhdGVkLiBUaGUgZXhhY3Qgc2VtYW50aWMgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgc3ViamVjdCB0byAKICAgICAgZnVydGhlciBzcGVjaWFsaXNhdGlvbi4gVGhlICdwcm9ncmVzc0luZm8nIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byAKICAgICAgcHJvdmlkZSBhZGRpdGlvbmFsIHRleHR1YWwgaW5mb3JtYXRpb24gaW4gdGhlICdOT1RfUlVOTklORycsICdDQU5DRUxMSU5HJyAKICAgICAgYW5kICdSVU5OSU5HJyBzdGF0ZXMuIEZ1cnRoZXIgc3BlY2lhbGlzYXRpb24gb2YgCiAgICAgICdwcm9ncmVzc1N0YXRlSW5mbycgbWF5IGJlIHByb3ZpZGVkIHdoZXJlIHRoaXMgZGF0YSB0eXBlIGlzIAogICAgICB1c2VkLgoKICAgICAgVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhlIHByb2Nlc3MsIHRoZSAnc3RhdHVzJyBhdHRyaWJ1dGUgaXMgc2V0IAogICAgICB0byAnRklOSVNIRUQnLCB0aGUgJ3Byb2dyZXNzUGVyY2VudGFnZScgdG8gMTAwJS4gVGhlIHRpbWUgaXMgY2FwdHVyZWQgaW4gCiAgICAgIHRoZSAnZW5kVGltZScgYXR0cmlidXRlLiBBZGRpdGlvbmFsIHRleHR1YWwgaW5mb3JtYXRpb24gbWF5IGJlIHByb3ZpZGVkIAogICAgICBpbiB0aGUgJ3Jlc3VsdFN0YXRlSW5mbycgYXR0cmlidXRlLiBUaGUgdHlwZSBvZiAKICAgICAgJ3Jlc3VsdFN0YXRlSW5mbycgaW4gdGhpcyBkYXRhIHR5cGUgZGVmaW5pdGlvbiBpcyAnU3RyaW5nJy4gCiAgICAgIEZ1cnRoZXIgc3BlY2lhbGlzYXRpb24gb2YgJ3Jlc3VsdFN0YXRlSW5mbycgbWF5IGJlIHByb3ZpZGVkIAogICAgICB3aGVyZSB0aGlzIGRhdGEgdHlwZSBpcyB1c2VkLgoKICAgICAgSW4gY2FzZSB0aGUgcHJvY2VzcyBmYWlscyB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHksIHRoZSAnc3RhdHVzJyAKICAgICAgYXR0cmlidXRlIGlzIHNldCB0byAnRkFJTEVEJyBvciAnUEFSVElBTExZX0ZBSUxFRCcsIHRoZSBjdXJyZW50IHZhbHVlIG9mIAogICAgICAncHJvZ3Jlc3NQZXJjZW50YWdlJyBpcyBmcm96ZW4sIGFuZCB0aGUgdGltZSBjYXB0dXJlZCBpbiAnZW5kVGltZScuIFRoZSAKICAgICAgJ3Jlc3VsdFN0YXRlSW5mbycgc3BlY2lmaWVzIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlLiAKICAgICAgU3BlY2lmaWMgZmFpbHVyZSByZWFzb25zIG1heSBiZSBzcGVjaWZpZWQgd2hlcmUgdGhlIGRhdGEgdHlwZSBkZWZpbmVkIGluIAogICAgICB0aGlzIGNsYXVzZSBpcyB1c2VkLiBUaGUgZXhhY3Qgc2VtYW50aWMgb2YgZmFpbHVyZSBtYXkgYmUgc3ViamVjdCBmb3IgCiAgICAgIGZ1cnRoZXIgc3BlY2lhbGlzYXRpb24gYXMgd2VsbC4KCiAgICAgIEluIGNhc2UgdGhlIHByb2Nlc3MgaXMgY2FuY2VsbGVkLCB0aGUgJ3N0YXR1cycgYXR0cmlidXRlIGlzIGZpcnN0IHNldCB0byAKICAgICAgJ0NBTkNFTExJTkcnIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGlzIHJlYWxseSBjYW5jZWxsZWQgdGhlbiB0byAnQ0FOQ0VMTEVEJy4gCiAgICAgIFRoZSB0cmFuc2l0aW9uIHRvICdDQU5DRUxMRUQnIGlzIGNhcHR1cmVkIGluIHRoZSAnZW5kVGltZScgYXR0cmlidXRlLiAKICAgICAgVGhlIHZhbHVlIG9mICdwcm9ncmVzc1BlcmNlbnRhZ2UnIGlzIGZyb3plbi4gQWRkaXRpb25hbCB0ZXh0dWFsIAogICAgICBpbmZvcm1hdGlvbiBtYXkgYmUgcHJvdmlkZWQgaW4gdGhlICdyZXN1bHRTdGF0ZUluZm8nIGF0dHJpYnV0ZS4KCiAgICAgIFRoZSAncmVzdWx0U3RhdGVJbmZvJyBhdHRyaWJ1dGUgaXMgcHJvdmlkZWQgb25seSBmb3IgYWRkaXRpb25hbCB0ZXh0dWFsIAogICAgICBxdWFsaWZpY2F0aW9uIG9mIHRoZSBzdGF0ZXMgJ0ZJTklTSEVEJywgJ0ZBSUxFRCcsICdQQVJUSUFMTFlfRkFJTEVEJyBvciAKICAgICAgJ0NBTkNFTExFRCcuIEl0IHNoYWxsIG5vdCBiZSB1c2VkIGZvciBtYWtpbmcgdGhlIG91dGNvbWUsIHRoYXQgdGhlIAogICAgICBwcm9jZXNzIG1heSBwcm9kdWNlIGluIGNhc2Ugb2Ygc3VjY2VzcywgYXZhaWxhYmxlLgoKICAgICAgVGhlIHByb2Nlc3MgbWF5IGhhdmUgdG8gYmUgY29tcGxldGVkIHdpdGhpbiBhIGNlcnRhaW4gdGltZSBhZnRlciBpdHMgCiAgICAgIGNyZWF0aW9uLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHJlcXVpcmVkIGRhdGEgbWF5IG5vdCBiZSBhdmFpbGFibGUgYW55IAogICAgICBtb3JlIGFmdGVyIGEgY2VydGFpbiB0aW1lLCBvciB0aGUgcHJvY2VzcyBvdXRjb21lIGlzIG5lZWRlZCB1bnRpbCBhIAogICAgICBjZXJ0YWluIHRpbWUgYW5kIHdoZW4gbm90IHByb3ZpZGVkIGJ5IHRoaXMgdGltZSBpcyBub3QgbmVlZGVkIGFueSBtb3JlLiAKICAgICAgVGhlIHRpbWUgdW50aWwgdGhlIE1uUyBwcm9kdWNlciBhdXRvbWF0aWNhbGx5IGNhbmNlbHMgdGhlIHByb2Nlc3MgaXMgCiAgICAgIGluZGljYXRlZCBieSB0aGUgJ3RpbWVyJyBhdHRyaWJ1dGUuIjsKICAgICAgCiAgICBsZWFmIGlkIHsKICAgICAgdHlwZSBzdHJpbmc7CiAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICBkZXNjcmlwdGlvbiAiSWQgb2YgdGhlIHByb2Nlc3MuIEl0IGlzIHVuaXF1ZSB3aXRoaW4gYSBzaW5nbGUgCiAgICAgICAgbXVsdGl2YWx1ZSBhdHRyaWJ1dGUgb2YgdHlwZSBQcm9jZXNzTW9uaXRvci4iOwogICAgfQogICAgCiAgICBsZWFmIHN0YXR1cyB7IAogICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICBlbnVtIE5PVF9TVEFSVEVEIDsKICAgICAgICBlbnVtIFJVTk5JTkcgOwogICAgICAgIGVudW0gQ0FOQ0VMTElORyA7CiAgICAgICAgZW51bSBGSU5JU0hFRCA7CiAgICAgICAgZW51bSBGQUlMRUQgOwogICAgICAgIGVudW0gUEFSVElBTExZX0ZBSUxFRCA7CiAgICAgICAgZW51bSBDQU5DRUxMRUQgOwogICAgICB9CiAgICAgIGNvbmZpZyBmYWxzZTsKICAgICAgZGVmYXVsdCAgUlVOTklORzsKICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgdGhlIHN0YXR1cyBvZiB0aGUgYXNzb2NpYXRlZCBwcm9jZXNzLCAKICAgICAgICB3aGV0aGVyIGl0IGZhaWxzLCBzdWNjZWVkcyBldGMuIAogICAgICAgIEl0IGRvZXMgbm90IHJlcHJlc2VudCB0aGUgcmV0dXJuZWQgdmFsdWVzIG9mIGEgc3VjY2Vzc2Z1bGx5IGZpbmlzaGVkIAogICAgICAgIHByb2Nlc3MuICI7CiAgICB9CgogICAgbGVhZiBwcm9ncmVzc1BlcmNlbnRhZ2UgewogICAgICB0eXBlIHVpbnQ4IHsKICAgICAgICByYW5nZSAwLi4xMDA7CiAgICAgIH0KICAgICAgY29uZmlnIGZhbHNlOwogICAgICBkZXNjcmlwdGlvbiAiUHJvZ3Jlc3Mgb2YgdGhlIGFzc29jaWF0ZWQgcHJvY2VzcyBhcyBwZXJjZW50YWdlIjsKICAgIH0KCiAgICBsZWFmLWxpc3QgcHJvZ3Jlc3NTdGF0ZUluZm8gewogICAgICB0eXBlIHN0cmluZzsKICAgICAgY29uZmlnIGZhbHNlOwogICAgICBkZXNjcmlwdGlvbiAiQWRkaXRpb25hbCB0ZXh0dWFsIHF1YWxpZmljYXRpb24gb2YgdGhlIHN0YXRlcyAKICAgICAgICAnTk9UX1NUQVJURUQnLCAnQ0FOQ0VMTElORycgYW5kICdSVU5OSU5HJy4KCiAgICAgICAgRm9yIHNwZWNpZmljIHByb2Nlc3Nlcywgc3BlY2lmaWMgd2VsbC1kZWZpbmVkIHN0cmluZ3MgKGUuZy4gc3RyaW5nIAogICAgICAgIHBhdHRlcm5zIG9yIGVudW1zKSBtYXkgYmUgZGVmaW5lZCBhcyBhIHNwZWNpYWxpc2F0aW9uLiI7CiAgICB9CgogICAgbGVhZiByZXN1bHRTdGF0ZUluZm8gewogICAgICB0eXBlIHN0cmluZzsKICAgICAgY29uZmlnIGZhbHNlOwogICAgICBkZXNjcmlwdGlvbiAiQWRkaXRpb25hbCB0ZXh0dWFsIHF1YWxpZmljYXRpb24gb2YgdGhlIHN0YXRlcyAKICAgICAgICAnRklOSVNIRUQnLCAnRkFJTEVEJywgJ1BBUlRJQUxMWV9GQUlMRUQgYW5kICdDQU5DRUxMRUQnLiAKICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlICdGQUlMRUQnIG9yICdQQVJUSUFMTFlfRkFJTEVEJyBzdGF0ZSB0aGlzIAogICAgICAgIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBwcm92aWRlIGVycm9yIHJlYXNvbnMuCgogICAgICAgIFRoaXMgYXR0cmlidXRlIHNoYWxsIG5vdCBiZSB1c2VkIHRvIG1ha2UgdGhlIG91dGNvbWUgb2YgdGhlIHByb2Nlc3MgCiAgICAgICAgYXZhaWxhYmxlIGZvciByZXRyaWV2YWwsIGlmIGFueS4gRm9yIHRoaXMgcHVycG9zZSwgZGVkaWNhdGVkIAogICAgICAgIGF0dHJpYnV0ZXMgc2hhbGwgYmUgc3BlY2lmaWVkIHdoZW4gc3BlY2lmeWluZyB0aGUgcmVwcmVzZW50YXRpb24gb2YgCiAgICAgICAgYSBzcGVjaWZpYyBwcm9jZXNzLgoKICAgICAgICBGb3Igc3BlY2lmaWMgcHJvY2Vzc2VzLCBzcGVjaWZpYyB3ZWxsLWRlZmluZWQgc3RyaW5ncyAoZS5nLiBzdHJpbmcgCiAgICAgICAgcGF0dGVybnMgb3IgZW51bXMpIG1heSBiZSBkZWZpbmVkIGFzIGEgc3BlY2lhbGlzYXRpb24uIjsKICAgIH0KCiAgICBsZWFmIHN0YXJ0VGltZSB7CiAgICAgIHR5cGUgeWFuZzpkYXRlLWFuZC10aW1lOwogICAgICBjb25maWcgZmFsc2U7CiAgICAgIGRlc2NyaXB0aW9uICJTdGFydCB0aW1lIG9mIHRoZSBhc3NvY2lhdGVkIHByb2Nlc3MsIGkuZS4gdGhlIHRpbWUgd2hlbiB0aGUgCiAgICAgICAgc3RhdHVzIGNoYW5nZWQgZnJvbSAnTk9UX1NUQVJURUQnIHRvICdSVU5OSU5HJy4iOwogICAgfQoKICAgIGxlYWYgZW5kVGltZSB7CiAgICAgIHR5cGUgeWFuZzpkYXRlLWFuZC10aW1lOwogICAgICBjb25maWcgZmFsc2U7CiAgICAgIGRlc2NyaXB0aW9uICJEYXRlIGFuZCB0aW1lIHdoZW4gc3RhdHVzIGNoYW5nZWQgdG8gJ1NVQ0NFU1MnLCAnQ0FOQ0VMTEVEJywgCiAgICAgICAgJ0ZBSUxFRCcgb3IgJ1BBUlRJQUxMWV9GQUlMRUQnLiAKCiAgICAgICAgSWYgdGhlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZSwgaXQgaXMgdGhlIGVzdGltYXRlZCB0aW1lIAogICAgICAgIHRoZSBwcm9jZXNzIHdpbGwgZW5kLiI7CiAgICB9CgogICAgbGVhZiB0aW1lciB7CiAgICAgIHR5cGUgdWludDMyOwogICAgICB1bml0cyBtaW51dGVzOwogICAgICBkZXNjcmlwdGlvbiAiVGltZSB1bnRpbCB0aGUgYXNzb2NpYXRlZCBwcm9jZXNzIGlzIGF1dG9tYXRpY2FsbHkgY2FuY2VsbGVkLgogICAgICAgIElmIHNldCwgdGhlIHN5c3RlbSBkZWNyZWFzZXMgdGhlIHRpbWVyIHdpdGggdGltZS4gV2hlbiBpdCByZWFjaGVzIHplcm8gCiAgICAgICAgdGhlIGNhbmNlbGxhdGlvbiBvZiB0aGUgYXNzb2NpYXRlZCBwcm9jZXNzIGlzIGluaXRpYXRlZCBieSB0aGUgCiAgICAgICAgTW5TX1Byb2R1Y2VyLiAKICAgICAgICBJZiBub3Qgc2V0LCB0aGVyZSBpcyBubyB0aW1lIGxpbWl0IGZvciB0aGUgcHJvY2Vzcy4KICAgICAgICAKICAgICAgICBPbmNlIHRoZSB0aW1lciBpcyBzZXQsIHRoZSBjb25zdW1lciBjYW4gbm90IGNoYW5nZSBpdCBhbnltb3JlLiAKICAgICAgICBJZiB0aGUgY29uc3VtZXIgaGFzIG5vdCBzZXQgdGhlIHRpbWVyIHRoZSBNblMgUHJvZHVjZXIgbWF5IHNldCBpdC4iOwogICAgICB5ZXh0M2dwcDpub3ROb3RpZnlhYmxlOwogICAgfQogIH0KICAKICB0eXBlZGVmIFRlbnRoT2ZEZWdyZWVzIHsgCiAgICB0eXBlIHVpbnQxNiB7IAogICAgICByYW5nZSAwLi4zNjAwOyAKICAgIH0KICAgIHVuaXRzICIwLjEgZGVncmVlcyI7CiAgICBkZXNjcmlwdGlvbiAiQSBzaW5nbGUgaW50ZWdyYWwgdmFsdWUgY29ycmVzcG9uZGluZyB0byBhbiBhbmdsZSBpbiBkZWdyZWVzIAogICAgICBiZXR3ZWVuIDAgYW5kIDM2MCB3aXRoIGEgcmVzb2x1dGlvbiBvZiAwLjEgZGVncmVlcy4iOwogIH0KCiAgdHlwZWRlZiBMYXRpdHVkZSB7CiAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgIGZyYWN0aW9uLWRpZ2l0cyA0OwogICAgICByYW5nZSAiLTkwLjAwMDAuLis5MC4wMDAwIjsgCiAgICB9CiAgICBkZXNjcmlwdGlvbiAiTGF0aXR1ZGUgdmFsdWVzIjsKICB9CgogIHR5cGVkZWYgTG9uZ2l0dWRlIHsKICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgZnJhY3Rpb24tZGlnaXRzIDQ7CiAgICAgIHJhbmdlICItMTgwLjAwMDAuLisxODAuMDAwMCI7IAogICAgfQogICAgZGVzY3JpcHRpb24gIkxvbmdpdHVkZSB2YWx1ZXMiOwogIH0KCiAgdHlwZWRlZiBBbHRpdHVkZSAgewogICAgdHlwZSBkZWNpbWFsNjQgewogICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgIH0KICAgIHVuaXRzICJtZXRlcnMiOwogICAgZGVzY3JpcHRpb24KICAgICAgIkhlaWdodCBmcm9tIGEgcmVmZXJlbmNlIDAgdmFsdWUuIjsgIAogIH0KCiAgZ3JvdXBpbmcgR2VvZ3JhcGhpY2FsQ29vcmRpbmF0ZXMgewogICAgZGVzY3JpcHRpb24gIlRoaXMgZGF0YXR5cGUgcmVwcmVzZW50cyB0aGUgZ2VvZ3JhcGhpY2FsIGNvb3JkaW5hdGVzIjsKICAgIHJlZmVyZW5jZSAiI0dQUCBUUyAyOC41NTggY2xhdXNlIDYuMy44IjsKICAgIAogICAgbGVhZiBsYXRpdHVkZSB7CiAgICAgIHR5cGUgTGF0aXR1ZGU7CiAgICAgIG1hbmRhdG9yeSB0cnVlOyAKICAgIH0KICAgICAgCiAgICBsZWFmIGxvbmdpdHVkZSB7CiAgICAgIHR5cGUgTG9uZ2l0dWRlOwogICAgICBtYW5kYXRvcnkgdHJ1ZTsgCiAgICB9CiAgICAKICAgIGxlYWYgYWx0aXR1ZGUgewogICAgICB0eXBlIEFsdGl0dWRlOwogICAgfQogICAgCiAgfQoKICB0eXBlZGVmIE9uT2ZmIHsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIE9OOwogICAgICBlbnVtIE9GRjsKICAgIH0KICB9CiAgCiAgLy8gZ3JvdXBpbmcgTWFuYWdlZE5GUHJvZmlsZSB3aWxsIGJlIHJlbW92ZWQgYXMgaXQgaXMgCiAgLy8gIGJlaW5nIG1vdmVkIHRvIF8zZ3BwLTVnYy1ucm0tbmZwcm9maWxlCiAgZ3JvdXBpbmcgTWFuYWdlZE5GUHJvZmlsZSB7CiAgICBkZXNjcmlwdGlvbiAiRGVmaW5lcyBwcm9maWxlIGZvciBtYW5hZ2VkIE5GIjsKICAgIHJlZmVyZW5jZSAiM0dQUCBUUyAyMy41MDEiOwogICAgCiAgICBsZWFmIGlkeCB7IHR5cGUgdWludDMyIDsgfQogICAgCiAgICBsZWFmIG5mSW5zdGFuY2VJRCB7CiAgICAgIGNvbmZpZyBmYWxzZTsKICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgIHR5cGUgeWFuZzp1dWlkIDsKICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcGFyYW1ldGVyIGRlZmluZXMgcHJvZmlsZSBmb3IgbWFuYWdlZCBORi4gCiAgICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgTkYgSW5zdGFuY2UgSUQgc2hhbGwgYmUgYSAKICAgICAgICBVbml2ZXJzYWxseSBVbmlxdWUgSWRlbnRpZmllciAoVVVJRCkgdmVyc2lvbiA0LCAKICAgICAgICBhcyBkZXNjcmliZWQgaW4gSUVURiBSRkMgNDEyMiAiIDsKICAgICAgeWV4dDNncHA6aW5WYXJpYW50OwogICAgfQogICAgCiAgICBsZWFmLWxpc3QgbmZUeXBlIHsKICAgICAgY29uZmlnIGZhbHNlOwogICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgdHlwZSBOZlR5cGU7CiAgICAgIGRlc2NyaXB0aW9uICJUeXBlIG9mIHRoZSBOZXR3b3JrIEZ1bmN0aW9uIiA7CiAgICB9CiAgICAKICAgIGxlYWYgaG9zdEFkZHIgewogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgdHlwZSBpbmV0Omhvc3QgOwogICAgICBkZXNjcmlwdGlvbiAiSG9zdCBhZGRyZXNzIG9mIGEgTkYiOwogICAgfQogICAgCiAgICBsZWFmIGF1dGh6SW5mbyB7CiAgICAgIHR5cGUgc3RyaW5nIDsKICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcGFyYW1ldGVyIGRlZmluZXMgTkYgU3BlY2lmaWMgU2VydmljZSBhdXRob3JpemF0aW9uIAogICAgICAgIGluZm9ybWF0aW9uLiBJdCBzaGFsbCBpbmNsdWRlIHRoZSBORiB0eXBlIChzKSBhbmQgTkYgcmVhbG1zL29yaWdpbnMgCiAgICAgICAgYWxsb3dlZCB0byBjb25zdW1lIE5GIFNlcnZpY2Uocykgb2YgTkYgU2VydmljZSBQcm9kdWNlci4iOwogICAgICByZWZlcmVuY2UgIlNlZSBUUyAyMy41MDEiIDsKICAgIH0KICAgIAogICAgbGVhZiBsb2NhdGlvbiB7CiAgICAgIHR5cGUgc3RyaW5nIDsKICAgICAgZGVzY3JpcHRpb24gIkluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgTkYgaW5zdGFuY2UgCiAgICAgICAgKGUuZy4gZ2VvZ3JhcGhpYyBsb2NhdGlvbiwgZGF0YSBjZW50ZXIpIGRlZmluZWQgYnkgb3BlcmF0b3IiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogICAgCiAgICBsZWFmIGNhcGFjaXR5IHsKICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgIHR5cGUgdWludDE2IDsKICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcGFyYW1ldGVyIGRlZmluZXMgc3RhdGljIGNhcGFjaXR5IGluZm9ybWF0aW9uIAogICAgICAgIGluIHRoZSByYW5nZSBvZiAwLTY1NTM1LCBleHByZXNzZWQgYXMgYSB3ZWlnaHQgcmVsYXRpdmUgdG8gb3RoZXIgCiAgICAgICAgTkYgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIHR5cGU7IGlmIGNhcGFjaXR5IGlzIGFsc28gcHJlc2VudCBpbiB0aGUgCiAgICAgICAgbmZTZXJ2aWNlTGlzdCBwYXJhbWV0ZXJzLCB0aG9zZSB3aWxsIGhhdmUgcHJlY2VkZW5jZSBvdmVyIHRoaXMgdmFsdWUuIjsKICAgICAgcmVmZXJlbmNlICJUUyAyOS41MTAiIDsKICAgIH0KICAgICAgCiAgICBsZWFmIG5GU3J2R3JvdXBJZCB7CiAgICAgIHR5cGUgc3RyaW5nIDsKICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcGFyYW1ldGVyIGRlZmluZXMgaWRlbnRpdHkgb2YgdGhlIGdyb3VwIHRoYXQgaXMgCiAgICAgICAgc2VydmVkIGJ5IHRoZSBORiBpbnN0YW5jZS4KICAgICAgICBNYXkgYmUgY29uZmlnIGZhbHNlIG9yIHRydWUgZGVwZW5kaW5nIG9uIHRoZSBNYW5hZ2VkRnVuY3Rpb24uIAogICAgICAgIENvbmZpZz10cnVlIGZvciBVZHJpbmZvLiBDb25maWc9ZmFsc2UgZm9yIFVkbUluZm8gYW5kIEF1c2ZJbmZvLiAKICAgICAgICBTaGFsbCBiZSBwcmVzZW50IGlmIC4uL25mVHlwZSA9IFVETSBvciBBVVNGIG9yIFVEUi4gIjsKICAgICAgcmVmZXJlbmNlICJUUyAyOS41MTAiIDsKICAgIH0KICAgIAogICAgbGVhZi1saXN0IHN1cHBvcnRlZERhdGFTZXRJZHMgewogICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICBlbnVtIFNVQlNDUklQVElPTjsKICAgICAgICBlbnVtIFBPTElDWTsKICAgICAgICBlbnVtIEVYUE9TVVJFOwogICAgICAgIGVudW0gQVBQTElDQVRJT047CiAgICAgIH0KICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2Ygc3VwcG9ydGVkIGRhdGEgc2V0cyBpbiB0aGUgVURSIGluc3RhbmNlLiAKICAgICAgICBNYXkgYmUgcHJlc2VudCBpZiAuLi9uZlR5cGUgPSBVRFIiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogICAgCiAgICBsZWFmLWxpc3Qgc21mU2VydmluZ0FyZWFzIHsKICAgICAgdHlwZSBzdHJpbmcgOwogICAgICBkZXNjcmlwdGlvbiAiRGVmaW5lcyB0aGUgU01GIHNlcnZpY2UgYXJlYShzKSB0aGUgVVBGIGNhbiBzZXJ2ZS4gCiAgICAgICAgU2hhbGwgYmUgcHJlc2VudCBpZiAuLi9uZlR5cGUgPSBVUEYiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogICAgCiAgICBsZWFmIHByaW9yaXR5IHsKICAgICAgdHlwZSB1aW50MTY7CiAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHBhcmFtZXRlciBkZWZpbmVzIFByaW9yaXR5IChyZWxhdGl2ZSB0byBvdGhlciBORnMgCiAgICAgICAgb2YgdGhlIHNhbWUgdHlwZSkgaW4gdGhlIHJhbmdlIG9mIDAtNjU1MzUsIHRvIGJlIHVzZWQgZm9yIE5GIHNlbGVjdGlvbjsgCiAgICAgICAgbG93ZXIgdmFsdWVzIGluZGljYXRlIGEgaGlnaGVyIHByaW9yaXR5LiBJZiBwcmlvcml0eSBpcyBhbHNvIHByZXNlbnQgCiAgICAgICAgaW4gdGhlIG5mU2VydmljZUxpc3QgcGFyYW1ldGVycywgdGhvc2Ugd2lsbCBoYXZlIHByZWNlZGVuY2Ugb3ZlciAKICAgICAgICB0aGlzIHZhbHVlLiBTaGFsbCBiZSBwcmVzZW50IGlmIC4uL25mVHlwZSA9IEFNRiAiOwogICAgICByZWZlcmVuY2UgIlRTIDI5LjUxMCIgOwogICAgfQogIH0KICAKICB0eXBlZGVmIHVzYWdlU3RhdGUgewogICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgIGVudW0gSURMRTsKICAgICAgZW51bSBBQ1RJVkU7CiAgICAgIGVudW0gQlVTWTsKICAgIH0KICAgIGRlc2NyaXB0aW9uICJJdCBkZXNjcmliZXMgd2hldGhlciBvciBub3QgdGhlIHJlc291cmNlIGlzIGFjdGl2ZWx5IGluIAogICAgICB1c2UgYXQgYSBzcGVjaWZpYyBpbnN0YW50LCBhbmQgaWYgc28sIHdoZXRoZXIgb3Igbm90IGl0IGhhcyBzcGFyZSAKICAgICAgY2FwYWNpdHkgZm9yIGFkZGl0aW9uYWwgdXNlcnMgYXQgdGhhdCBpbnN0YW50LiBUaGUgdmFsdWUgaXMgUkVBRC1PTkxZLiI7CiAgICByZWZlcmVuY2UgIklUVSBUIFJlY29tbWVuZGF0aW9uIFguNzMxIjsKICB9CiAgCiAgZ3JvdXBpbmcgU0FQR3JwIHsKICAgIGxlYWYgaG9zdCB7CiAgICAgIHR5cGUgaW5ldDpob3N0OwogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgIH0KICAgIGxlYWYgcG9ydCB7CiAgICAgIHR5cGUgaW5ldDpwb3J0LW51bWJlcjsKICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICB9CiAgICBkZXNjcmlwdGlvbiAiU2VydmljZSBhY2Nlc3MgcG9pbnQuIjsKICAgIHJlZmVyZW5jZSAiVFMgMjguNjIyIjsKICB9CiAgCiAgdHlwZWRlZiBNY2MgewogICAgZGVzY3JpcHRpb24gIlRoZSBtb2JpbGUgY291bnRyeSBjb2RlIGNvbnNpc3RzIG9mIHRocmVlIGRlY2ltYWwgZGlnaXRzLCAKICAgICAgVGhlIGZpcnN0IGRpZ2l0IG9mIHRoZSBtb2JpbGUgY291bnRyeSBjb2RlIGlkZW50aWZpZXMgdGhlIGdlb2dyYXBoaWMgCiAgICAgIHJlZ2lvbiAodGhlIGRpZ2l0cyAxIGFuZCA4IGFyZSBub3QgdXNlZCk6IjsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnWzAyLTc5XVswLTldWzAtOV0nOwogICAgfQogICAgcmVmZXJlbmNlICIzR1BQIFRTIDIzLjAwMyBzdWJjbGF1c2UgMi4yIGFuZCAxMi4xIjsKICB9CgogIHR5cGVkZWYgTW5jIHsKICAgIGRlc2NyaXB0aW9uICJUaGUgbW9iaWxlIG5ldHdvcmsgY29kZSBjb25zaXN0cyBvZiB0d28gb3IgdGhyZWUgCiAgICAgIGRlY2ltYWwgZGlnaXRzIChmb3IgZXhhbXBsZTogTU5DIG9mIDAwMSBpcyBub3QgdGhlIHNhbWUgYXMgTU5DIG9mIDAxKSI7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJ1swLTldWzAtOV1bMC05XXxbMC05XVswLTldJzsKICAgIH0KICAgIHJlZmVyZW5jZSAiM0dQUCBUUyAyMy4wMDMgc3ViY2xhdXNlIDIuMiBhbmQgMTIuMSI7CiAgfQoKICBncm91cGluZyBQTE1OSWQgewogICAgbGVhZiBtY2MgewogICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgdHlwZSBNY2M7CiAgICB9CiAgICBsZWFmIG1uYyB7CiAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICB0eXBlIE1uYzsKICAgIH0KICAgIHJlZmVyZW5jZSAiVFMgMzguNDEzIGNsYXVzZSA5LjMuMy41IjsKICB9CiAgCiAgdHlwZWRlZiBOY2kgewogICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIFRoZSBOQ0kgc2hhbGwgYmUgb2YgZml4ZWQgbGVuZ3RoIG9mIDM2IGJpdHMgCiAgICAgIGFuZCBzaGFsbCBiZSBjb2RlZCB1c2luZyBmdWxsIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLiAKICAgICAgVGhlIGV4YWN0IGNvZGluZyBvZiB0aGUgTkNJIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBlYWNoIFBMTU4gb3BlcmF0b3IiOwogICAgcmVmZXJlbmNlICJUUyAyMy4wMDMiOwogICAgdHlwZSB1bmlvbiB7CiAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICBsZW5ndGggMzY7CiAgICAgICAgcGF0dGVybiAnWzAxXSsnOwogICAgICB9CiAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICBsZW5ndGggOTsKICAgICAgICBwYXR0ZXJuICdbYS1mQS1GMC05XSonOwogICAgICB9CiAgICB9CiAgfQogICAgCiAgdHlwZWRlZiBPcGVyYXRpb25hbFN0YXRlIHsKICAgIHJlZmVyZW5jZSAiM0dQUCBUUyAyOC42MjUgYW5kIElUVS1UIFguNzMxIjsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIERJU0FCTEVEIHsKICAgICAgICB2YWx1ZSAwOwogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgcmVzb3VyY2UgaXMgdG90YWxseSBpbm9wZXJhYmxlLiI7CiAgICAgIH0KCiAgICAgIGVudW0gRU5BQkxFRCB7CiAgICAgICAgdmFsdWUgMTsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIHJlc291cmNlIGlzIHBhcnRpYWxseSBvciBmdWxseSBvcGVyYWJsZS4iOwogICAgICB9CgogICAgfQogIH0KICAKICB0eXBlZGVmIEJhc2ljQWRtaW5pc3RyYXRpdmVTdGF0ZSB7CiAgICByZWZlcmVuY2UgIjNHUFAgVFMgMjguNjI1IGFuZCBJVFUtVCBYLjczMSI7CiAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgZW51bSBMT0NLRUQgewogICAgICAgIHZhbHVlIDA7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSByZXNvdXJjZSBpcyBhZG1pbmlzdHJhdGl2ZWx5IHByb2hpYml0ZWQgZnJvbSBwZXJmb3JtaW5nCiAgICAgICAgICAgICAgICAgc2VydmljZXMgZm9yIGl0cyB1c2Vycy4iOwogICAgICB9CgogICAgICBlbnVtIFVOTE9DS0VEIHsKICAgICAgICB2YWx1ZSAxOwogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgcmVzb3VyY2UgaXMgYWRtaW5pc3RyYXRpdmVseSBwZXJtaXR0ZWQgdG8gcGVyZm9ybQogICAgICAgICAgc2VydmljZXMgZm9yIGl0cyB1c2Vycy4gVGhpcyBpcyBpbmRlcGVuZGVudCBvZiBpdHMgaW5oZXJlbnQKICAgICAgICAgIG9wZXJhYmlsaXR5LiI7CiAgICAgIH0KICAgIH0KICB9CiAgCiAgdHlwZWRlZiBBZG1pbmlzdHJhdGl2ZVN0YXRlIHsKICAgIHJlZmVyZW5jZSAiM0dQUCBUUyAyOC42MjUgYW5kIElUVS1UIFguNzMxIjsKICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICBlbnVtIExPQ0tFRCB7CiAgICAgICAgdmFsdWUgMDsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIHJlc291cmNlIGlzIGFkbWluaXN0cmF0aXZlbHkgcHJvaGliaXRlZCBmcm9tIHBlcmZvcm1pbmcKICAgICAgICAgICAgICAgICBzZXJ2aWNlcyBmb3IgaXRzIHVzZXJzLiI7CiAgICAgIH0KCiAgICAgIGVudW0gVU5MT0NLRUQgewogICAgICAgIHZhbHVlIDE7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSByZXNvdXJjZSBpcyBhZG1pbmlzdHJhdGl2ZWx5IHBlcm1pdHRlZCB0byBwZXJmb3JtCiAgICAgICAgICBzZXJ2aWNlcyBmb3IgaXRzIHVzZXJzLiBUaGlzIGlzIGluZGVwZW5kZW50IG9mIGl0cyBpbmhlcmVudAogICAgICAgICAgb3BlcmFiaWxpdHkuIjsKICAgICAgfQoKICAgICAgZW51bSBTSFVUVElOR0RPV04gewogICAgICAgIHZhbHVlIDI7CiAgICAgICAgZGVzY3JpcHRpb24gIlVzZSBvZiB0aGUgcmVzb3VyY2UgaXMgYWRtaW5pc3RyYXRpdmVseSBwZXJtaXR0ZWQgdG8KICAgICAgICAgIGV4aXN0aW5nIGluc3RhbmNlcyBvZiB1c2Ugb25seS4gV2hpbGUgdGhlIHN5c3RlbSByZW1haW5zIGluCiAgICAgICAgICB0aGUgc2h1dHRpbmcgZG93biBzdGF0ZSB0aGUgbWFuYWdlciBvciB0aGUgbWFuYWdlZCBlbGVtZW50IAogICAgICAgICAgbWF5IGF0IGFueSB0aW1lIGNhdXNlIHRoZSByZXNvdXJjZSB0byB0cmFuc2l0aW9uIHRvIHRoZSAKICAgICAgICAgIGxvY2tlZCBzdGF0ZS4iOwogICAgICB9CiAgICB9CiAgfQogIAogIHR5cGVkZWYgQXZhaWxhYmlsaXR5U3RhdHVzIHsKICAgICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgICAgICBlbnVtIElOX1RFU1Q7CiAgICAgICAgICBlbnVtIEZBSUxFRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgIGVudW0gUE9XRVJfT0ZGOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgZW51bSBPRkZfTElORTsgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgIGVudW0gT0ZGX0RVVFk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBlbnVtIERFUEVOREVOQ1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBlbnVtIERFR1JBREVEOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgZW51bSBOT1RfSU5TVEFMTEVEOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgZW51bSBMT0dfRlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgIH0KICB9CiAgCiAgdHlwZWRlZiBDZWxsU3RhdGUgewogICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICBlbnVtIElETEU7CiAgICAgICAgZW51bSBJTkFDVElWRTsgICAgICAgICAgICAgIAogICAgICAgIGVudW0gQUNUSVZFOyAgICAgICAgICAgICAgCiAgICAgfQogIH0KCiAgdHlwZWRlZiBOcnBjaSB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICByZWZlcmVuY2UgIlRTIDM2LjIxMSBzdWJjbGF1c2UgNi4xMSI7CiAgfQoKICB0eXBlZGVmIFRhYyB7CiAgICB0eXBlIGludDMyIHsKICAgICAgcmFuZ2UgMC4uMTY3NzcyMTUgOwogICAgfQogICAgZGVzY3JpcHRpb24gIlRyYWNraW5nIEFyZWEgQ29kZSI7CiAgICByZWZlcmVuY2UgIlRTIDIzLjAwMyBjbGF1c2UgMTkuNC4yLjMiOwogIH0KCiAgZ3JvdXBpbmcgVGFpR3JwIHsKICAgIGRlc2NyaXB0aW9uICJUaGlzIDw8ZGF0YVR5cGU+PiBkZWZpbmVzIGEgVHJhY2tpbmcgQXJlYSBJZGVudGl0eSAoVEFJKSAKICAgICAgYXMgc3BlY2lmaWVkIGluIGNsYXVzZSAyOC42IG9mIFRTIDIzLjAwMywgY2xhdXNlIDguMiBvZiBUUyAzOC4zMDAgCiAgICAgIGFuZCBjbGF1c2UgOS4zLjMuMTEgb2YgVFMgMzguNDEzLiBJdCBpcyBjb21wb3NlZCBvZiB0aGUgUExNTiAKICAgICAgaWRlbnRpZmllciAoUExNTi1JZCwgd2hpY2ggaXMgY29tcG9zZWQgb2YgdGhlIE1DQyBhbmQgTU5DKSBhbmQgCiAgICAgIHRoZSBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuICI7CiAgICBsaXN0IHBsbW5JZCB7CiAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElkZW50aXR5LiI7CiAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICBtYXgtZWxlbWVudHMgMTsKICAgICAga2V5ICJtY2MgbW5jIjsKICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgfQogICAgCiAgICBsZWFmIHRhYyB7IHR5cGUgVGFjOyB9CiAgfQogICAgICAgCiAgZ3JvdXBpbmcgR2VvQ29vcmRpbmF0ZUdycCB7CiAgICBkZXNjcmlwdGlvbiAiR2VvZ3JhcGhpY2FsIGxvY2F0aW9uIG9uIGVhcnRoIjsgCiAgICBsZWFmIGxhdGl0dWRlIHsKICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgIGZyYWN0aW9uLWRpZ2l0cyA0OwogICAgICAgIHJhbmdlIC05MC4uOTAgOwogICAgICB9CiAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICBkZXNjcmlwdGlvbiAiTGF0aXR1ZGUgYmFzZWQgb24gV29ybGQgR2VvZGV0aWMgU3lzdGVtICgxOTg0IHZlcnNpb24pIAogICAgICAgIGdsb2JhbCByZWZlcmVuY2UgZnJhbWUgKFdHUyA4NCkuIFBvc2l0aXZlIHZhbHVlcyBjb3JyZXNwb25kIHRvIHRoZSAKICAgICAgICBub3J0aGVybiBoZW1pc3BoZXJlLiI7CiAgICAgIH0KICAgICAgICAKICAgIGxlYWYgbG9uZ2l0dWRlIHsKICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgIGZyYWN0aW9uLWRpZ2l0cyA0OwogICAgICAgIHJhbmdlIC0xODAuLjE4MCA7CiAgICAgIH0KICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgIGRlc2NyaXB0aW9uICJMb25naXR1ZGUgYmFzZWQgb24gV29ybGQgR2VvZGV0aWMgU3lzdGVtICgxOTg0IHZlcnNpb24pIAogICAgICAgIGdsb2JhbCByZWZlcmVuY2UgZnJhbWUgKFdHUyA4NCkuIFBvc2l0aXZlIHZhbHVlcyBjb3JyZXNwb25kIHRvIAogICAgICAgIGRlZ3JlZXMgZWFzdCBvZiAwIGRlZ3JlZXMgbG9uZ2l0dWRlLiI7CiAgICB9CiAgfQogICAKICBncm91cGluZyBHZW9BcmVhR3JwIHsKICAgIGRlc2NyaXB0aW9uICJUaGlzIGRhdGEgdHlwZSBkZWZpbmVzIGEgZ2VvZ3JhcGhpY2FsIGFyZWEuIAogICAgICBUaGUgZ2VvLWFyZWEgaXMgZGVmaW5lZCB1c2luZyBhIGNvbnZleCBwb2x5Z29uIGluIHRoZSBhdHRyaWJ1dGUgCiAgICAgICdjb252ZXhHZW9Qb2x5Z29uJy4iOwogICAgCiAgICBsaXN0IGNvbnZleEdlb1BvbHlnb24gewogICAgICBkZXNjcmlwdGlvbiAiU3BlY2lmaWVzIHRoZSBnZW9ncmFwaGljYWwgYXJlYSB3aXRoIGEgY29udmV4IHBvbHlnb24uIAogICAgICAgIFRoZSBjb252ZXggcG9seWdvbiBpcyBzcGVjaWZpZWQgYnkgaXRzIGNvcm5lcnMuIjsKICAgICAgICBrZXkgImxhdGl0dWRlIGxvbmdpdHVkZSI7CiAgICAgIG1pbi1lbGVtZW50cyAzOwogICAgICBvcmRlcmVkLWJ5IHVzZXI7CiAgICAgIAogICAgICB1c2VzIEdlb0Nvb3JkaW5hdGVHcnA7CiAgICB9CiAgfQogIAogIHR5cGVkZWYgQW1mUmVnaW9uSWQgewogICAgdHlwZSB1bmlvbiB7IAogICAgICB0eXBlIHVpbnQ4IDsKICAgICAgdHlwZSBzdHJpbmcgewogICAgICAgIGxlbmd0aCA4OwogICAgICAgIHBhdHRlcm4gJ1swMV0qJzsKICAgICAgfQogICAgfQogICAgcmVmZXJlbmNlICJjbGF1c2UgMi4xMC4xIG9mIDNHUFAgVFMgMjMuMDAzIjsKICB9CgogIHR5cGVkZWYgQW1mU2V0SWQgewogICAgdHlwZSB1bmlvbiB7IAogICAgICB0eXBlIHVpbnQxNiB7CiAgICAgICAgcmFuZ2UgJzAuLjEwMjMnOwogICAgICB9CiAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICBsZW5ndGggODsKICAgICAgICBwYXR0ZXJuICdbMDFdKic7CiAgICAgIH0KICAgIH0KICAgIHJlZmVyZW5jZSAiY2xhdXNlIDIuMTAuMSBvZiAzR1BQIFRTIDIzLjAwMyI7CiAgfQoKICB0eXBlZGVmIEFtZlBvaW50ZXIgewogICAgdHlwZSB1bmlvbiB7IAogICAgICB0eXBlIHVpbnQ4IHsKICAgICAgICByYW5nZSAnMC4uNjMnOwogICAgICB9CiAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICBsZW5ndGggNjsKICAgICAgICBwYXR0ZXJuICdbMDFdKic7CiAgICAgIH0KICAgIH0KICAgIHJlZmVyZW5jZSAiY2xhdXNlIDIuMTAuMSBvZiAzR1BQIFRTIDIzLjAwMyI7CiAgfQogICAgICAgIAogIGdyb3VwaW5nIEFtZklkZW50aWZpZXIgeyAgICAgICAgCiAgICBsZWFmIGFtZlJlZ2lvbklkIHsKICAgICAgdHlwZSBBbWZSZWdpb25JZDsKICAgIH0KICAgIGxlYWYgYW1mU2V0SWQgewogICAgICB0eXBlIEFtZlNldElkOwogICAgfQogICAgbGVhZiBhbWZQb2ludGVyIHsKICAgICAgdHlwZSBBbWZQb2ludGVyOwogICAgfSAKICAgIGRlc2NyaXB0aW9uICJUaGUgQU1GSSBpcyBjb25zdHJ1Y3RlZCBmcm9tIGFuIEFNRiBSZWdpb24gSUQsIAogICAgICBhbiBBTUYgU2V0IElEIGFuZCBhbiBBTUYgUG9pbnRlci4gCiAgICAgIFRoZSBBTUYgUmVnaW9uIElEIGlkZW50aWZpZXMgdGhlIHJlZ2lvbiwgCiAgICAgIHRoZSBBTUYgU2V0IElEIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIEFNRiBTZXQgd2l0aGluIHRoZSBBTUYgUmVnaW9uLCBhbmQgCiAgICAgIHRoZSBBTUYgUG9pbnRlciB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBBTUYgd2l0aGluIHRoZSBBTUYgU2V0LiAiOyAKICB9ICAgIAoKLy8gdHlwZSBkZWZpbml0aW9ucyBlc3BlY2lhbGx5IGZvciBjb3JlIE5GcwoKICB0eXBlZGVmIE5mVHlwZSB7CiAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgZW51bSBOUkY7CiAgICAgIGVudW0gVURNOwogICAgICBlbnVtIEFNRjsKICAgICAgZW51bSBTTUY7CiAgICAgIGVudW0gQVVTRjsKICAgICAgZW51bSBORUY7CiAgICAgIGVudW0gUENGOwogICAgICBlbnVtIFNNU0Y7CiAgICAgIGVudW0gTlNTRjsKICAgICAgZW51bSBVRFI7CiAgICAgIGVudW0gTE1GOwogICAgICBlbnVtIEdNTEM7CiAgICAgIGVudW0gNUdfRUlSOwogICAgICBlbnVtIFNFUFA7CiAgICAgIGVudW0gVVBGOwogICAgICBlbnVtIE4zSVdGOwogICAgICBlbnVtIEFGOwogICAgICBlbnVtIFVEU0Y7CiAgICAgIGVudW0gQlNGOwogICAgICBlbnVtIENIRjsKICAgIH0gICAgICAgICAgCiAgfQogIAogIHR5cGVkZWYgTm90aWZpY2F0aW9uVHlwZSB7CiAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgZW51bSBOMV9NRVNTQUdFUzsKICAgICAgZW51bSBOMl9JTkZPUk1BVElPTjsKICAgICAgZW51bSBMT0NBVElPTl9OT1RJRklDQVRJT047CiAgICB9ICAgICAgCiAgfQogIAogIHR5cGVkZWYgTG9hZCB7CiAgICBkZXNjcmlwdGlvbiAiTGF0ZXN0IGtub3duIGxvYWQgaW5mb3JtYXRpb24gb2YgdGhlIE5GLCBwZXJjZW50YWdlICI7CiAgICB0eXBlIHVpbnQ4IHsKICAgICAgcmFuZ2UgMC4uMTAwOwogICAgfQogIH0KCiAgdHlwZWRlZiBOMU1lc3NhZ2VDbGFzcyB7CiAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgZW51bSA1R01NOwogICAgICBlbnVtIFNNOwogICAgICBlbnVtIExQUDsKICAgICAgZW51bSBTTVM7IAogICAgfSAgICAgIAogIH0KICAKICB0eXBlZGVmIE4ySW5mb3JtYXRpb25DbGFzcyB7CiAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgZW51bSBTTTsKICAgICAgZW51bSBOUlBQQTsKICAgICAgZW51bSBQV1M7CiAgICAgIGVudW0gUFdTX0JDQUw7CiAgICAgIGVudW0gUFdTX1JGOwogICAgfSAgICAgICAgICAgICAgCiAgfQogIAogIGdyb3VwaW5nIERlZmF1bHROb3RpZmljYXRpb25TdWJzY3JpcHRpb24gewogICAgCiAgICBsZWFmIG5vdGlmaWNhdGlvblR5cGUgewogICAgICB0eXBlIE5vdGlmaWNhdGlvblR5cGU7CiAgICB9CiAgICAKICAgIGxlYWYgY2FsbGJhY2tVcmkgewogICAgICB0eXBlIGluZXQ6dXJpOwogICAgfQogICAgCiAgICBsZWFmIG4xTWVzc2FnZUNsYXNzIHsKICAgICAgdHlwZSBOMU1lc3NhZ2VDbGFzczsKICAgIH0KICAgIAogICAgbGVhZiBuMkluZm9ybWF0aW9uQ2xhc3MgewogICAgICB0eXBlIE4ySW5mb3JtYXRpb25DbGFzczsKICAgIH0gICAgCiAgfSAgCiAgICAgICAgCiAgZ3JvdXBpbmcgSXB2NEFkZHJlc3NSYW5nZSB7CiAgbGVhZiBzdGFydCB7CiAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzOwogICAgfQogIGxlYWYgZW5kIHsKICAgIHR5cGUgaW5ldDppcHY0LWFkZHJlc3M7CiAgICB9ICAgIAogIH0KICAgIAogIGdyb3VwaW5nIElwdjZQcmVmaXhSYW5nZSB7CiAgbGVhZiBzdGFydCB7CiAgICB0eXBlIGluZXQ6aXB2Ni1wcmVmaXg7CiAgICB9CiAgbGVhZiBlbmQgewogICAgdHlwZSBpbmV0OmlwdjYtcHJlZml4OwogICAgfSAgICAKICB9CiAgICAgCiAgdHlwZWRlZiBOc2lJZCB7CiAgICB0eXBlIHN0cmluZzsKICB9CiAgICAKICB0eXBlZGVmIFVlTW9iaWxpdHlMZXZlbCB7CiAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgZW51bSBTVEFUSU9OQVJZOwogICAgICBlbnVtIE5PTUFESUM7CiAgICAgIGVudW0gUkVTVFJJQ1RFRF9NT0JJTElUWTsKICAgICAgZW51bSBGVUxMWV9NT0JJTElUWTsKICAgIH0KICB9CiAgICAgIAogIHR5cGVkZWYgUmVzb3VyY2VTaGFyaW5nTGV2ZWwgewogICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICBlbnVtIFNIQVJFRDsKICAgICAgICBlbnVtIE5PVF9TSEFSRUQ7CiAgICAgIH0KICB9CiAgICAgIAogIHR5cGVkZWYgVHhEaXJlY3Rpb24gewogICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICBlbnVtIERMOwogICAgICAgIGVudW0gVUw7CiAgICAgICAgZW51bSBETF9BTkRfVUw7CiAgICAgIH0KICB9CiAgICAgIAogIGdyb3VwaW5nIEFkZHJlc3NXaXRoVmxhbiB7CiAgICBsZWFmIGlwQWRkcmVzcyB7CiAgICAgIHR5cGUgaW5ldDppcC1hZGRyZXNzOyAgIAogICAgfQogICAgbGVhZiB2bGFuSWQgewogICAgICAgdHlwZSB1aW50MTY7CiAgICB9ICAKICB9CgogIC8qIERpc3Rpbmd1aXNoZWROYW1lIHBhdHRlcm4gaXMgYnVpbHQgdXAgYmFzZWQgb24gdGhlIAogICAgRUJORiBpbiAzMi4zMDAgY2xhdXNlIDcuMyAgRUJORiBvZiBETiBTdHJpbmcgUmVwcmVzZW50YXRpb24KICAKICAgIGxlYWYgRE4geyB0eXBlIHN0cmluZyB7ICAgLy8gIFNhbWUgcGF0dGVybiBhcyBMb2NhbEROCiAgICAgIHBhdHRlcm4gJ1tBLVpdW14sPSs8PiM7XFwiXHJcbiouXSo9KFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSgoW14sPSs8PiM7XFwiXHJcbipdfChcXFthLWZBLUYwLTldezJ9KSkqKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSk/KCxbQS1aXVteLD0rPD4jO1xcIlxyXG4qLl0qPShbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSkoKFteLD0rPD4jO1xcIlxyXG4qXXwoXFxbYS1mQS1GMC05XXsyfSkpKihbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSkpPykqJzsgICAgICAKICAgIH0gfQogIAogICAgbGVhZiBmdWxsTG9jYWxETiB7IHR5cGUgc3RyaW5nIHsgICAvLyBMb2NhbFJETiAsIHsgUkROU2VwYXJhdG9yICwgTG9jYWxSRE4gfSAgICBSRE5TZXBhcmF0b3IgaXMgYSBzaW5nbGUgLCBubyBzcGFjZSBvciBcUiBhbGxvd2VkICAgTWUubXlrZXk9MSBhbGxvd2VkCiAgICAgIC8vICAoZnVsbExvY2FsUkROKSgsKGZ1bGxMb2NhbFJETikpKgogICAgICBwYXR0ZXJuICcoKFtBLVpdW14sPSs8PiM7XFwiXHJcbiouXSp8KFtBLVpdW14sPSs8PiM7XFwiXHJcbiouXSpcLlthLXpdW14sPSs8PiM7XFwiXHJcbiouXSopKT0oKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSgoW14sPSs8PiM7XFwiXHJcbipdfChcXFthLWZBLUYwLTldezJ9KSkqKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSk/KSkoLCgoW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKnwoW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKlwuW2Etel1bXiw9Kzw+IztcXCJcclxuKi5dKikpPSgoW14sPSs8PiM7XFwiXHJcbiogXXwoXFxbYS1mQS1GMC05XXsyfSkpKChbXiw9Kzw+IztcXCJcclxuKl18KFxcW2EtZkEtRjAtOV17Mn0pKSooW14sPSs8PiM7XFwiXHJcbiogXXwoXFxbYS1mQS1GMC05XXsyfSkpKT8pKSkqJzsgICAgICAKICAgIH0gfQogIAogICAgbGVhZiBMb2NhbEROIHsgdHlwZSBzdHJpbmcgeyAgIC8vIExvY2FsUkROICwgeyBSRE5TZXBhcmF0b3IgLCBMb2NhbFJETiB9ICAgIFJETlNlcGFyYXRvciBpcyBhIHNpbmdsZSAsIG5vIHNwYWNlIG9yIFxSIGFsbG93ZWQKICAgICAgLy8gIExvY2FsUkROKCxMb2NhbFJETikqCiAgICAgIHBhdHRlcm4gJ1tBLVpdW14sPSs8PiM7XFwiXHJcbiouXSo9KFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSgoW14sPSs8PiM7XFwiXHJcbipdfChcXFthLWZBLUYwLTldezJ9KSkqKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSk/KCxbQS1aXVteLD0rPD4jO1xcIlxyXG4qLl0qPShbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSkoKFteLD0rPD4jO1xcIlxyXG4qXXwoXFxbYS1mQS1GMC05XXsyfSkpKihbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSkpPykqJzsgICAgICAKICAgIH0gfQogIAogICAgbGVhZiBmdWxsTG9jYWxSRE4geyB0eXBlIHN0cmluZyB7ICAgLy8gc2FtZSBhcyBmdWxsTG9jYWxETkF0dHJpYnV0ZVR5cGVBbmRWYWx1ZQogICAgICBwYXR0ZXJuICcoW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKnwoW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKlwuW2Etel1bXiw9Kzw+IztcXCJcclxuKi5dKikpPSgoW14sPSs8PiM7XFwiXHJcbiogXXwoXFxbYS1mQS1GMC05XXsyfSkpKChbXiw9Kzw+IztcXCJcclxuKl18KFxcW2EtZkEtRjAtOV17Mn0pKSooW14sPSs8PiM7XFwiXHJcbiogXXwoXFxbYS1mQS1GMC05XXsyfSkpKT8pJzsgICAgICAKICAgIH0gfQogIAogICAgbGVhZiBMb2NhbFJETiB7IHR5cGUgc3RyaW5nIHsgICAvLyBzYW1lIGFzIExvY2FsRE5BdHRyaWJ1dGVUeXBlQW5kVmFsdWUKICAgICAgcGF0dGVybiAnW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKj0oW14sPSs8PiM7XFwiXHJcbiogXXwoXFxbYS1mQS1GMC05XXsyfSkpKChbXiw9Kzw+IztcXCJcclxuKl18KFxcW2EtZkEtRjAtOV17Mn0pKSooW14sPSs8PiM7XFwiXHJcbiogXXwoXFxbYS1mQS1GMC05XXsyfSkpKT8nOyAgICAgIAogICAgfSB9CiAgCiAgICBsZWFmIGZ1bGxMb2NhbEROQXR0cmlidXRlVHlwZUFuZFZhbHVlIHsgdHlwZSBzdHJpbmcgeyAvLyBMb2NhbEROQXR0cmlidXRlVHlwZSAsIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZVNlcGFyYXRvciAsIFJlZ3VsYXJBdHRyaWJ1dGVWYWx1ZSAKICAgICAgLy8gcGF0dGVybiBMb2NhbEROQXR0cmlidXRlVHlwZT1SZWd1bGFyQXR0cmlidXRlVmFsdWUKICAgICAgcGF0dGVybiAnKFtBLVpdW14sPSs8PiM7XFwiXHJcbiouXSp8KFtBLVpdW14sPSs8PiM7XFwiXHJcbiouXSpcLlthLXpdW14sPSs8PiM7XFwiXHJcbiouXSopKT0oKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSgoW14sPSs8PiM7XFwiXHJcbipdfChcXFthLWZBLUYwLTldezJ9KSkqKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSk/KSc7ICAgICAgCiAgICB9IH0KICAgIAogICAgICAvLyBsaW1pdGF0aW9uOiBOYW1lc09mQ2xhc3NBbmROYW1pbmdBdHRyaWJ1dGVub3Qgc3VwcG9ydGVkIE1lLm15a2V5PTEKICAgIGxlYWYgTG9jYWxETkF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSB7IHR5cGUgc3RyaW5nIHsgCiAgICAgIC8vIGVibmYxICAgICAgICAgIExvY2FsRE5BdHRyaWJ1dGVUeXBlICwgQXR0cmlidXRlVHlwZUFuZFZhbHVlU2VwYXJhdG9yICwgUmVndWxhckF0dHJpYnV0ZVZhbHVlCiAgICAgIC8vIGVibmYyLWxpbWl0ZWQgIE5hbWVPZkNsYXNzV2l0aElkQXR0cmlidXRlICwgQXR0cmlidXRlVHlwZUFuZFZhbHVlU2VwYXJhdG9yICwgUmVndWxhckF0dHJpYnV0ZVZhbHVlCiAgICAgIC8vIHBhdHRlcm4gICAgICAgIE5hbWVPZkNsYXNzV2l0aElkQXR0cmlidXRlPVJlZ3VsYXJBdHRyaWJ1dGVWYWx1ZQogICAgICBwYXR0ZXJuICdbQS1aXVteLD0rPD4jO1xcIlxyXG4qLl0qPShbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSkoKFteLD0rPD4jO1xcIlxyXG4qXXwoXFxbYS1mQS1GMC05XXsyfSkpKihbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSkpPyc7ICAgICAgCiAgICB9IH0KCiAgICBsZWFmIExvY2FsRE5BdHRyaWJ1dGVUeXBlIHsgdHlwZSBzdHJpbmcgeyAgIC8vIE5hbWVPZkNsYXNzV2l0aElkQXR0cmlidXRlIHwgTmFtZXNPZkNsYXNzQW5kTmFtaW5nQXR0cmlidXRlICBSRE5TZXBhcmF0b3IgaXMgYSBzaW5nbGUgLCBubyBzcGFjZSBvciBcUiBhbGxvd2VkCiAgICAgIC8vICBOYW1lT2ZDbGFzc1dpdGhJZEF0dHJpYnV0ZXxOYW1lc09mQ2xhc3NBbmROYW1pbmdBdHRyaWJ1dGUKICAgICAgcGF0dGVybiAnW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKnwoW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKlwuW2Etel1bXiw9Kzw+IztcXCJcclxuKi5dKiknOyAgICAgIAogICAgfSB9CgogICAgbGVhZiBSZWd1bGFyQXR0cmlidXRlVmFsdWUgeyB0eXBlIHN0cmluZyB7ICAgICAgIC8vICggQXR0cmlidXRlVmFsdWVDaGFyIC0gU3BhY2VDaGFyICkgLCBbIHsgQXR0cmlidXRlVmFsdWVDaGFyIH0gLCAoIEF0dHJpYnV0ZVZhbHVlQ2hhciAtIFNwYWNlQ2hhciApIF0KICAgICAgcGF0dGVybiAnKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSgoW14sPSs8PiM7XFwiXHJcbipdfChcXFthLWZBLUYwLTldezJ9KSkqKFteLD0rPD4jO1xcIlxyXG4qIF18KFxcW2EtZkEtRjAtOV17Mn0pKSk/JyA7IAogICAgfSB9CiAgICAKICAgIGxlYWYgTmFtZXNPZkNsYXNzQW5kTmFtaW5nQXR0cmlidXRlICB7IHR5cGUgc3RyaW5nIHsgIC8vIENsYXNzTmFtZSAsIENsYXNzTmFtaW5nQXR0cmlidXRlU2VwYXJhdG9yICwgTmFtaW5nQXR0cmlidXRlTmFtZQogICAgICAvLyBwYXR0ZXJuOiBDbGFzc05hbWVcLk5hbWluZ0F0dHJpYnV0ZU5hbWUKICAgICAgcGF0dGVybiAnW0EtWl1bXiw9Kzw+IztcXCJcclxuKi5dKlwuW2Etel1bXiw9Kzw+IztcXCJcclxuKi5dKicgOyAKICAgIH0gfQogIAogICAgbGVhZiByZXN0cmljdGl2ZUNsYXNzTmFtZSB7IHR5cGUgc3RyaW5nIHsgICAgIC8vIAogICAgICBwYXR0ZXJuICdbYS16QS1aXVthLXpBLVowLTktX10qJyA7IAogICAgfSB9CiAgCiAgICBsZWFmIENsYXNzTmFtZSB7IHR5cGUgc3RyaW5nIHsgICAgIC8vIENhcGl0YWxMZXR0ZXJDaGFyICwgeyBMb2NhbEROQXR0cmlidXRlVHlwZUNoYXIgfQogICAgICBwYXR0ZXJuICdbQS1aXVteLD0rPD4jO1xcIlxyXG4qLl0qJyA7IAogICAgfSB9CiAgCiAgICBsZWFmIE5hbWluZ0F0dHJpYnV0ZU5hbWUgeyB0eXBlIHN0cmluZyB7ICAgLy8gU21hbGxMZXR0ZXJDaGFyICwgeyBMb2NhbEROQXR0cmlidXRlVHlwZUNoYXIgfQogICAgICBwYXR0ZXJuICdbYS16XVteLD0rPD4jO1xcIlxyXG4qLl0qJyA7IAogICAgfSB9ICAgIAogICAgCiAgKi8KICB0eXBlZGVmIERpc3Rpbmd1aXNoZWROYW1lIHsgICAgCiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJ1tBLVpdW14sPSs8PiM7XFwiXHJcbiouXSo9KFteLD0rPD4jO1xcIlxyXG4qIF18JwogICAgICArICcoXFxbYS1mQS1GMC05XXsyfSkpKChbXiw9Kzw+IztcXCJcclxuKl18KFxcW2EtZkEtRjAtOV17Mn0pKSonCiAgICAgICsgJyhbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSkpPycKICAgICAgKyAnKCxbQS1aXVteLD0rPD4jO1xcIlxyXG4qLl0qPShbXiw9Kzw+IztcXCJcclxuKiBdfChcXFthLWZBLUYwLTldezJ9KSknCiAgICAgICsgJygoW14sPSs8PiM7XFwiXHJcbipdfChcXFthLWZBLUYwLTldezJ9KSkqJwogICAgICArICcoW14sPSs8PiM7XFwiXHJcbiogXXwoXFxbYS1mQS1GMC05XXsyfSkpKT8pKic7ICAgICAgCiAgICB9CiAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgM0dQUCBzdGFuZGFyZCBmb3IgRGlzdGluZ3Vpc2hlZE5hbWUuIAogICAgICAKICAgICAgTGltaXRhdGlvbnM6IAogICAgICAtIFJETlNlcGFyYXRvcjogZG9uJ3QgYWxsb3cgU3BhY2VDaGFyIG9yIENhcnJpYWdlUmV0dXJuQ2hhcgogICAgICAtIE51bGxETjogRGlzYWxsb3cgbnVsbEROIHRoYXQgaXMgdGhlIHNhbWUgYXMgbm90IHByb3ZpZGluZyBhIEROCiAgICAgIC0gTmFtZXNPZkNsYXNzQW5kTmFtaW5nQXR0cmlidXRlIGZvcm1hdCBub3QgYWxsb3dlZCAKICAgICAgICAoZWcuIE1hbmFnZWRFbGVtZW50Lm15a2V5PTM0NTQzNikiOwogICAgcmVmZXJlbmNlICAiM0dQUCBUUyAzMi4zMDAiOwogIH0gCiAKICB0eXBlZGVmIFFPZmZzZXRSYW5nZSAgewogICAgdHlwZSBpbnQ4IHsgCiAgICAgIHJhbmdlICItMjQgfCAtMjIgfCAtMjAgfCAtMTggfCAtMTYgfCAtMTQgfCAtMTIgfCAtMTAgfCAtOCB8IC02IHwgIiArCiAgICAgICAgIiAtNSB8IC00IHwgLTMgfCAtMiB8IC0xIHwgMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDggfCAxMCB8ICIgKwogICAgICAgICIgMTIgfCAxNCB8IDE2IHwgMTggfCAyMCB8IDIyIHwgMjQiOyAKICAgIH0KICAgIHVuaXRzIGRCOwogIH0KCiAgZ3JvdXBpbmcgUmVwb3J0aW5nQ3RybCB7CiAgICBjaG9pY2UgcmVwb3J0aW5nQ3RybCB7CiAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICBkZXNjcmlwdGlvbiAiCiAgICAgICAgVGhpcyBjaG9pY2UgZGVmaW5lcyB0aGUgbWV0aG9kIGZvciByZXBvcnRpbmcgY29sbGVjdGVkIHBlcmZvcm1hbmNlCiAgICAgICAgbWV0cmljcyB0byBNblMgY29uc3VtZXJzIGFzIHdlbGwgYXMgdGhlIHBhcmFtZXRlcnMgZm9yIGNvbmZpZ3VyaW5nIHRoZQogICAgICAgIHJlcG9ydGluZyBmdW5jdGlvbi4gSXQgaXMgYSBjaG9pY2UgYmV0d2VlbiB0aGUgY29udHJvbCBwYXJhbWV0ZXIKICAgICAgICByZXF1aXJlZCBmb3IgdGhlIHJlcG9ydGluZyBtZXRob2RzLCB3aG9zZSBwcmVzZW5jZSBzZWxlY3RzIHRoZQogICAgICAgIHJlcG9ydGluZyBtZXRob2QgYXMgZm9sbG93czoKCiAgICAgICAgLSBXaGVuIG9ubHkgdGhlIGZpbGVSZXBvcnRpbmdQZXJpb2QgYXR0cmlidXRlIGlzIHByZXNlbnQsIHRoZSBNblMKICAgICAgICBwcm9kdWNlciBzaGFsbCBzdG9yZSBmaWxlcyBvbiB0aGUgTW5TIHByb2R1Y2VyIGF0IGEgbG9jYXRpb24gc2VsZWN0ZWQKICAgICAgICBieSB0aGUgTW5TIHByb2R1Y2VyIGFuZCwgb24gY29uZGl0aW9uIHRoYXQgYW4gYXBwcm9wcmlhdGUgc3Vic2NyaXB0aW9uCiAgICAgICAgaXMgaW4gcGxhY2UsIGluZm9ybSB0aGUgTW5TIGNvbnN1bWVyIGFib3V0IHRoZSBhdmFpbGFiaWxpdHkgb2YgbmV3CiAgICAgICAgZmlsZXMgYW5kIHRoZSBmaWxlIGxvY2F0aW9uIHVzaW5nIHRoZSBub3RpZnlGaWxlUmVhZHkgbm90aWZpY2F0aW9uLgogICAgICAgIEluIGNhc2UgdGhlIHByZXBhcmF0aW9uIG9mIGEgZmlsZSBmYWlscywgJ25vdGlmeUZpbGVQcmVwYXJhdGlvbkVycm9yJwogICAgICAgIHNoYWxsIGJlIHNlbnQgaW5zdGVhZC4KCiAgICAgICAgLSBXaGVuIHRoZSAnZmlsZVJlcG9ydGluZ1BlcmlvZCcgYW5kICdub3RpZmljYXRpb25SZWNpcGllbnRBZGRyZXNzJwogICAgICAgIGF0dHJpYnV0ZXMgYXJlIHByZXNlbnQsIHRoZW4gdGhlIE1uUyBwcm9kdWNlciBzaGFsbCBiZWhhdmUgbGlrZQogICAgICAgIGRlc2NyaWJlZCBmb3IgdGhlIGNhc2UgdGhhdCBvbmx5IHRoZSAnZmlsZVJlcG9ydGluZ1BlcmlvZCcgaXMgcHJlc2VudC4KICAgICAgICBJbiBhZGRpdGlvbiwgdGhlIE1uUyBwcm9kdWNlciBzaGFsbCBjcmVhdGUgb24gYmVoYWxmIG9mIHRoZSBNblMKICAgICAgICBjb25zdW1lciBhIHN1YnNjcmlwdGlvbiwgdXNpbmcgJ050ZlN1YnNjcmlwdGlvbkNvbnRyb2wnLCBmb3IgdGhlCiAgICAgICAgbm90aWZpY2F0aW9uIHR5cGVzICdub3RpZnlNT0lDcmVhdGlvbicgYW5kICdub3RpZnlNT0lEZWxldGlvbicgcmVsYXRlZAogICAgICAgIHRvIHRoZSAnRmlsZScgaW5zdGFuY2VzIHRoYXQgd2lsbCBiZSBwcm9kdWNlZCBsYXRlci4gSW4gY2FzZSBhbiBleGlzdGluZwogICAgICAgIHN1YnNjcmlwdGlvbiBkb2VzIGFscmVhZHkgaW5jbHVkZSB0aGUgJ0ZpbGUnIGluc3RhbmNlcyB0byBiZSBwcm9kdWNlZCwKICAgICAgICBubyBuZXcgc3Vic2NyaXB0aW9uIHNoYWxsIGJlIGNyZWF0ZWQuIFRoZQogICAgICAgICdub3RpZmljYXRpb25SZWNpcGllbnRBZGRyZXNzJyBhdHRyaWJ1dGUgaW4gdGhlIGNyZWF0ZWQKICAgICAgICAnTnRmU3Vic2NyaXB0aW9uQ29udHJvbCcgaW5zdGFuY2Ugc2hhbGwgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgICAnbm90aWZpY2F0aW9uUmVjaXBpZW50QWRkcmVzcycgaW4gdGhlIHJlbGF0ZWQgJ1BlcmZNZXRyaWNKb2InLiBUaGlzCiAgICAgICAgZmVhdHVyZSBpcyBjYWxsZWQgaW1wbGljaXQgbm90aWZpY2F0aW9uIHN1YnNjcmlwdGlvbiwgYXMgb3Bwb3NlZCB0byB0aGUKICAgICAgICBjYXNlIHdoZXJlIHRoZSBNblMgY29uc3VtZXIgY3JlYXRlcyB0aGUgc3Vic2NyaXB0aW9uIChleHBsaWNpdAogICAgICAgIG5vdGlmaWNhdGlvbiBzdWJzY3JpcHRpb24pLiBXaGVuIHRoZSByZWxhdGVkICdQZXJmTWV0cmljSm9iJyBpcwogICAgICAgIGRlbGV0ZWQsIHRoZSAnTnRmU3Vic2NyaXB0aW9uQ29udHJvbCcgaW5zdGFuY2UgY3JlYXRlZCBkdWUgdG8gdGhlCiAgICAgICAgcmVxdWVzdCBmb3IgaW1wbGljaXQgc3Vic2NyaXB0aW9uIHNoYWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC4KCiAgICAgICAgLSBXaGVuIG9ubHkgdGhlIGZpbGVSZXBvcnRpbmdQZXJpb2QgYW5kIGZpbGVMb2NhdGlvbiBhdHRyaWJ1dGVzIGFyZQogICAgICAgIHByZXNlbnQsIHRoZSBNblMgcHJvZHVjZXIgc2hhbGwgc3RvcmUgdGhlIGZpbGVzIG9uIGEgTW5TIGNvbnN1bWVyLCB0aGF0CiAgICAgICAgY2FuIGJlIGFueSBlbnRpdHkgc3VjaCBhcyBhIGZpbGUgc2VydmVyLCBhdCB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5CiAgICAgICAgZmlsZUxvY2F0aW9uLiBObyBub3RpZmljYXRpb24gaXMgZW1pdHRlZCBieSB0aGUgTW5TIHByb2R1Y2VyLgoKICAgICAgICAtIFdoZW4gb25seSB0aGUgc3RyZWFtVGFyZ2V0IGF0dHJpYnV0ZSBpcyBwcmVzZW50LCB0aGUgTW5TIHByb2R1Y2VyCiAgICAgICAgc2hhbGwgc3RyZWFtIHRoZSBkYXRhIHRvIHRoZSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgc3RyZWFtVGFyZ2V0LgoKICAgICAgICBGb3IgdGhlIGZpbGUtYmFzZWQgcmVwb3J0aW5nIG1ldGhvZHMgdGhlIGZpbGVSZXBvcnRpbmdQZXJpb2QgYXR0cmlidXRlCiAgICAgICAgc3BlY2lmaWVzIHRoZSB0aW1lIHdpbmRvdyBkdXJpbmcgd2hpY2ggY29sbGVjdGVkIG1lYXN1cmVtZW50cyBhcmUKICAgICAgICBzdG9yZWQgaW50byB0aGUgc2FtZSBmaWxlIGJlZm9yZSB0aGUgZmlsZSBpcyBjbG9zZWQgYW5kIGEgbmV3IGZpbGUgaXMKICAgICAgICBvcGVuZWQuIjsKCiAgICAgIGNhc2UgZmlsZS1iYXNlZC1yZXBvcnRpbmcgewogICAgICAgIGxlYWYgZmlsZVJlcG9ydGluZ1BlcmlvZCB7CiAgICAgICAgICB0eXBlIHVpbnQzMiB7CiAgICAgICAgICAgIHJhbmdlIDEuLm1heDsKICAgICAgICAgIH0KICAgICAgICAgIHVuaXRzIG1pbnV0ZXM7CiAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICAgIGRlc2NyaXB0aW9uICJGb3IgdGhlIGZpbGUtYmFzZWQgcmVwb3J0aW5nIG1ldGhvZCB0aGlzIGlzIHRoZSB0aW1lCiAgICAgICAgICAgIHdpbmRvdyBkdXJpbmcgd2hpY2ggY29sbGVjdGVkIG1lYXN1cmVtZW50cyBhcmUgc3RvcmVkIGludG8gdGhlIHNhbWUKICAgICAgICAgICAgZmlsZSBiZWZvcmUgdGhlIGZpbGUgaXMgY2xvc2VkIGFuZCBhIG5ldyBmaWxlIGlzIG9wZW5lZC4KICAgICAgICAgICAgVGhlIHRpbWUtcGVyaW9kIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgZ3JhbnVsYXJpdHlQZXJpb2QuCgogICAgICAgICAgICBBcHBsaWNhYmxlIHdoZW4gdGhlIGZpbGUtYmFzZWQgcmVwb3J0aW5nIG1ldGhvZCBpcyBzdXBwb3J0ZWQuIjsKICAgICAgICB9CiAgICAgICAgY2hvaWNlIHJlcG9ydGluZy10YXJnZXQgewogICAgICAgICAgY2FzZSBmaWxlLXRhcmdldCB7CiAgICAgICAgICAgIGxlYWYgZmlsZUxvY2F0aW9uIHsKICAgICAgICAgICAgdHlwZSBzdHJpbmcgOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQXBwbGljYWJsZSBhbmQgbXVzdCBiZSBwcmVzZW50IHdoZW4gdGhlIGZpbGUtYmFzZWQKICAgICAgICAgICAgICByZXBvcnRpbmcgbWV0aG9kIGlzIHN1cHBvcnRlZCwgYW5kIHRoZSBmaWxlcyBhcmUgc3RvcmVkIG9uIHRoZSBNblMKICAgICAgICAgICAgICBjb25zdW1lci4iOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBjYXNlIG5vdGlmaWNhdGlvbi10YXJnZXQgewogICAgICAgICAgICBsZWFmIG5vdGlmaWNhdGlvblJlY2lwaWVudEFkZHJlc3MgewogICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk11c3QgYmUgcHJlc2VudCB3aGVuIHRoZSBub3RpZmljYXRpb24tYmFzZWQgcmVwb3J0aW5nCiAgICAgICAgICAgICAgbWV0aG9kIGlzIHN1cHBvcnRlZCwgYW5kIHRoZSB0aGUgZmlsZXMgYXJlIGF2YWlsYWJsZSBhcwogICAgICAgICAgICAgIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBNblMgY29uc3VtZXIgdG8gc3Vic2NyaWJlIHRvLiI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBkZXNjcmlwdGlvbiAiV2hlbiBuZXRpaGVyIGZpbGVMb2NhdGlvbiBvciBub3RpZmljYXRpb25SZWNpcGllbnRBZGRyZXNzCiAgICAgICAgICBhcmUgcHJlc2VudCwgdGhlIGZpbGVzIGFyZSBzdG9yZWQgYW5kIGF2YWlsYWJsZSB0byB0aGUgTW5TIGNvbnN1bWVyCiAgICAgICAgICBpZiB0aGUgTW5TIHN1YnNjcmliZXMgdG8gdGhlIG5vdGlmeUZpbGVSZWFkeSBub3RpZmljYXRpb24uIjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNhc2Ugc3RyZWFtLWJhc2VkLXJlcG9ydGluZyB7CiAgICAgICAgbGVhZiBzdHJlYW1UYXJnZXQgewogICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICAgIGRlc2NyaXB0aW9uICJBcHBsaWNhYmxlIHdoZW4gc3RyZWFtLWJhc2VkIHJlcG9ydGluZyBtZXRob2QgaXMKICAgICAgICAgICAgc3VwcG9ydGVkLiI7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9
 ietf-geo-location      urn:ietf:params:xml:ns:yang:ietf-geo-location   \N      []      2022-02-11      bW9kdWxlIGlldGYtZ2VvLWxvY2F0aW9uIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYtZ2VvLWxvY2F0aW9uIjsKICBwcmVmaXggZ2VvOwogIGltcG9ydCBpZXRmLXlhbmctdHlwZXMgewogICAgcHJlZml4IHlhbmc7CiAgICByZWZlcmVuY2UgIlJGQyA2OTkxOiBDb21tb24gWUFORyBEYXRhIFR5cGVzIjsKICB9CgogIG9yZ2FuaXphdGlvbgogICAgIklFVEYgTkVUTU9EIFdvcmtpbmcgR3JvdXAgKE5FVE1PRCkiOwogIGNvbnRhY3QKICAgIldHIFdlYjogICA8aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy93Zy9uZXRtb2QvPgogICAgV0cgTGlzdDogIDxtYWlsdG86bmV0bW9kQGlldGYub3JnPgoKICAgIEVkaXRvcjogICBDaHJpc3RpYW4gSG9wcHMKICAgICAgICAgICAgICA8bWFpbHRvOmNob3Bwc0BjaG9wcHMub3JnPiI7CgogIGRlc2NyaXB0aW9uCiAgICAiVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGdyb3VwaW5nIG9mIGEgY29udGFpbmVyIG9iamVjdCBmb3IKICAgICBzcGVjaWZ5aW5nIGEgbG9jYXRpb24gb24gb3IgYXJvdW5kIGFuIGFzdHJvbm9taWNhbCBvYmplY3QgKGUuZy4sCiAgICAgJ2VhcnRoJykuCgogICAgIFRoZSBrZXkgd29yZHMgJ01VU1QnLCAnTVVTVCBOT1QnLCAnUkVRVUlSRUQnLCAnU0hBTEwnLCAnU0hBTEwKICAgICBOT1QnLCAnU0hPVUxEJywgJ1NIT1VMRCBOT1QnLCAnUkVDT01NRU5ERUQnLCAnTk9UIFJFQ09NTUVOREVEJywKICAgICAnTUFZJywgYW5kICdPUFRJT05BTCcgaW4gdGhpcyBkb2N1bWVudCBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMKICAgICBkZXNjcmliZWQgaW4gQkNQIDE0IChSRkMgMjExOSkgKFJGQyA4MTc0KSB3aGVuLCBhbmQgb25seSB3aGVuLAogICAgIHRoZXkgYXBwZWFyIGluIGFsbCBjYXBpdGFscywgYXMgc2hvd24gaGVyZS4KCiAgICAgQ29weXJpZ2h0IChjKSAyMDIyIElFVEYgVHJ1c3QgYW5kIHRoZSBwZXJzb25zIGlkZW50aWZpZWQgYXMKICAgICBhdXRob3JzIG9mIHRoZSBjb2RlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKICAgICB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBpcyBwZXJtaXR0ZWQgcHVyc3VhbnQgdG8sCiAgICAgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2UgdGVybXMgY29udGFpbmVkIGluLCB0aGUKICAgICBSZXZpc2VkIEJTRCBMaWNlbnNlIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUKICAgICBJRVRGIFRydXN0J3MgTGVnYWwgUHJvdmlzaW9ucyBSZWxhdGluZyB0byBJRVRGIERvY3VtZW50cwogICAgIChodHRwczovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoaXMgWUFORyBtb2R1bGUgaXMgcGFydCBvZiBSRkMgOTE3OQogICAgIChodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9pbmZvL3JmYzkxNzkpOyBzZWUgdGhlIFJGQyBpdHNlbGYKICAgICBmb3IgZnVsbCBsZWdhbCBub3RpY2VzLiI7CgogIHJldmlzaW9uIDIwMjItMDItMTEgewogICAgZGVzY3JpcHRpb24KICAgICAgIkluaXRpYWwgUmV2aXNpb24iOwogICAgcmVmZXJlbmNlCiAgICAgICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgfQoKICBmZWF0dXJlIGFsdGVybmF0ZS1zeXN0ZW1zIHsKICAgIGRlc2NyaXB0aW9uCiAgICAgICJUaGlzIGZlYXR1cmUgbWVhbnMgdGhlIGRldmljZSBzdXBwb3J0cyBzcGVjaWZ5aW5nIGxvY2F0aW9ucwogICAgICAgdXNpbmcgYWx0ZXJuYXRlIHN5c3RlbXMgZm9yIHJlZmVyZW5jZSBmcmFtZXMuIjsKICB9CgogIGdyb3VwaW5nIGdlby1sb2NhdGlvbiB7CiAgICBkZXNjcmlwdGlvbgogICAgICAiR3JvdXBpbmcgdG8gaWRlbnRpZnkgYSBsb2NhdGlvbiBvbiBhbiBhc3Ryb25vbWljYWwgb2JqZWN0LiI7CgogICAgY29udGFpbmVyIGdlby1sb2NhdGlvbiB7CiAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIkEgbG9jYXRpb24gb24gYW4gYXN0cm9ub21pY2FsIGJvZHkgKGUuZy4sICdlYXJ0aCcpCiAgICAgICAgIHNvbWV3aGVyZSBpbiBhIHVuaXZlcnNlLiI7CgogICAgICBjb250YWluZXIgcmVmZXJlbmNlLWZyYW1lIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlRoZSBGcmFtZSBvZiBSZWZlcmVuY2UgZm9yIHRoZSBsb2NhdGlvbiB2YWx1ZXMuIjsKCiAgICAgICAgbGVhZiBhbHRlcm5hdGUtc3lzdGVtIHsKICAgICAgICAgIGlmLWZlYXR1cmUgImFsdGVybmF0ZS1zeXN0ZW1zIjsKICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBzeXN0ZW0gaW4gd2hpY2ggdGhlIGFzdHJvbm9taWNhbCBib2R5IGFuZAogICAgICAgICAgICAgZ2VvZGV0aWMtZGF0dW0gaXMgZGVmaW5lZC4gIE5vcm1hbGx5LCB0aGlzIHZhbHVlIGlzIG5vdAogICAgICAgICAgICAgcHJlc2VudCBhbmQgdGhlIHN5c3RlbSBpcyB0aGUgbmF0dXJhbCB1bml2ZXJzZTsgaG93ZXZlciwKICAgICAgICAgICAgIHdoZW4gcHJlc2VudCwgdGhpcyB2YWx1ZSBhbGxvd3MgZm9yIHNwZWNpZnlpbmcgYWx0ZXJuYXRlCiAgICAgICAgICAgICBzeXN0ZW1zIChlLmcuLCB2aXJ0dWFsIHJlYWxpdGllcykuICBBbiBhbHRlcm5hdGUtc3lzdGVtCiAgICAgICAgICAgICBtb2RpZmllcyB0aGUgZGVmaW5pdGlvbiAoYnV0IG5vdCB0aGUgdHlwZSkgb2YgdGhlIG90aGVyCiAgICAgICAgICAgICB2YWx1ZXMgaW4gdGhlIHJlZmVyZW5jZSBmcmFtZS4iOwogICAgICAgIH0KICAgICAgICBsZWFmIGFzdHJvbm9taWNhbC1ib2R5IHsKICAgICAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICAgICAgcGF0dGVybiAnWyAtQFxbLVxeXy1+XSonOwogICAgICAgICAgfQogICAgICAgICAgZGVmYXVsdCAiZWFydGgiOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFuIGFzdHJvbm9taWNhbCBib2R5IGFzIG5hbWVkIGJ5IHRoZSBJbnRlcm5hdGlvbmFsCiAgICAgICAgICAgICBBc3Ryb25vbWljYWwgVW5pb24gKElBVSkgb3IgYWNjb3JkaW5nIHRvIHRoZSBhbHRlcm5hdGUKICAgICAgICAgICAgIHN5c3RlbSBpZiBzcGVjaWZpZWQuICBFeGFtcGxlcyBpbmNsdWRlICdzdW4nIChvdXIgc3RhciksCiAgICAgICAgICAgICAnZWFydGgnIChvdXIgcGxhbmV0KSwgJ21vb24nIChvdXIgbW9vbiksICdlbmNlbGFkdXMnIChhCiAgICAgICAgICAgICBtb29uIG9mIFNhdHVybiksICdjZXJlcycgKGFuIGFzdGVyb2lkKSwgYW5kCiAgICAgICAgICAgICAnNjdwL2NodXJ5dW1vdi1nZXJhc2ltZW5rbyAoYSBjb21ldCkuICBUaGUgQVNDSUkgdmFsdWUKICAgICAgICAgICAgIFNIT1VMRCBoYXZlIHVwcGVyY2FzZSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZCBub3QKICAgICAgICAgICAgIGluY2x1ZGUgY29udHJvbCBjaGFyYWN0ZXJzIChpLmUuLCB2YWx1ZXMgMzIuLjY0LCBhbmQKICAgICAgICAgICAgIDkxLi4xMjYpLiAgQW55IHByZWNlZGluZyAndGhlJyBpbiB0aGUgbmFtZSBTSE9VTEQgTk9UIGJlCiAgICAgICAgICAgICBpbmNsdWRlZC4iOwogICAgICAgICAgcmVmZXJlbmNlCiAgICAgICAgICAgICJodHRwczovL3d3dy5pYXUub3JnLyI7CiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lciBnZW9kZXRpYy1zeXN0ZW0gewogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBnZW9kZXRpYyBzeXN0ZW0gb2YgdGhlIGxvY2F0aW9uIGRhdGEuIjsKICAgICAgICAgIGxlYWYgZ2VvZGV0aWMtZGF0dW0gewogICAgICAgICAgICB0eXBlIHN0cmluZyB7CiAgICAgICAgICAgICAgcGF0dGVybiAnWyAtQFxbLVxeXy1+XSonOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIkEgZ2VvZGV0aWMtZGF0dW0gZGVmaW5pbmcgdGhlIG1lYW5pbmcgb2YgbGF0aXR1ZGUsCiAgICAgICAgICAgICAgIGxvbmdpdHVkZSwgYW5kIGhlaWdodC4gIFRoZSBkZWZhdWx0IHdoZW4gdGhlCiAgICAgICAgICAgICAgIGFzdHJvbm9taWNhbCBib2R5IGlzICdlYXJ0aCcgaXMgJ3dncy04NCcsIHdoaWNoIGlzCiAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIEdsb2JhbCBQb3NpdGlvbmluZyBTeXN0ZW0gKEdQUykuICBUaGUKICAgICAgICAgICAgICAgQVNDSUkgdmFsdWUgU0hPVUxEIGhhdmUgdXBwZXJjYXNlIGNvbnZlcnRlZCB0bwogICAgICAgICAgICAgICBsb3dlcmNhc2UgYW5kIG5vdCBpbmNsdWRlIGNvbnRyb2wgY2hhcmFjdGVycwogICAgICAgICAgICAgICAoaS5lLiwgdmFsdWVzIDMyLi42NCwgYW5kIDkxLi4xMjYpLiAgVGhlIElBTkEgcmVnaXN0cnkKICAgICAgICAgICAgICAgZnVydGhlciByZXN0cmljdHMgdGhlIHZhbHVlIGJ5IGNvbnZlcnRpbmcgYWxsIHNwYWNlcwogICAgICAgICAgICAgICAoJyAnKSB0byBkYXNoZXMgKCctJykuCiAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZ2VvZGV0aWMtZGF0dW0gaW5kaWNhdGVzCiAgICAgICAgICAgICAgIGhvdyBhY2N1cmF0ZWx5IGl0IG1vZGVscyB0aGUgYXN0cm9ub21pY2FsIGJvZHkgaW4KICAgICAgICAgICAgICAgcXVlc3Rpb24sIGJvdGggZm9yIHRoZSAnaG9yaXpvbnRhbCcKICAgICAgICAgICAgICAgbGF0aXR1ZGUvbG9uZ2l0dWRlIGNvb3JkaW5hdGVzIGFuZCBmb3IgaGVpZ2h0CiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLiI7CiAgICAgICAgICAgIHJlZmVyZW5jZQogICAgICAgICAgICAgICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucywKICAgICAgICAgICAgICAgU2VjdGlvbiA2LjEiOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBjb29yZC1hY2N1cmFjeSB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgYWNjdXJhY3kgb2YgdGhlIGxhdGl0dWRlL2xvbmdpdHVkZSBwYWlyIGZvcgogICAgICAgICAgICAgICBlbGxpcHNvaWRhbCBjb29yZGluYXRlcywgb3IgdGhlIFgsIFksIGFuZCBaIGNvbXBvbmVudHMKICAgICAgICAgICAgICAgZm9yIENhcnRlc2lhbiBjb29yZGluYXRlcy4gIFdoZW4gY29vcmQtYWNjdXJhY3kgaXMKICAgICAgICAgICAgICAgc3BlY2lmaWVkLCBpdCBpbmRpY2F0ZXMgaG93IHByZWNpc2VseSB0aGUgY29vcmRpbmF0ZXMKICAgICAgICAgICAgICAgaW4gdGhlIGFzc29jaWF0ZWQgbGlzdCBvZiBsb2NhdGlvbnMgaGF2ZSBiZWVuCiAgICAgICAgICAgICAgIGRldGVybWluZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBjb29yZGluYXRlIHN5c3RlbQogICAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoZSBnZW9kZXRpYy1kYXR1bS4gIEZvciBleGFtcGxlLCB0aGVyZQogICAgICAgICAgICAgICBtaWdodCBiZSB1bmNlcnRhaW50eSBkdWUgdG8gbWVhc3VyZW1lbnQgZXJyb3IgaWYgYW4KICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsIG1lYXN1cmVtZW50IHdhcyBtYWRlIHRvIGRldGVybWluZSBlYWNoCiAgICAgICAgICAgICAgIGxvY2F0aW9uLiI7CiAgICAgICAgICB9CiAgICAgICAgICBsZWFmIGhlaWdodC1hY2N1cmFjeSB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAibWV0ZXJzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIGFjY3VyYWN5IG9mIHRoZSBoZWlnaHQgdmFsdWUgZm9yIGVsbGlwc29pZGFsCiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOyB0aGlzIHZhbHVlIGlzIG5vdCB1c2VkIHdpdGggQ2FydGVzaWFuCiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLiAgV2hlbiBoZWlnaHQtYWNjdXJhY3kgaXMgc3BlY2lmaWVkLCBpdAogICAgICAgICAgICAgICBpbmRpY2F0ZXMgaG93IHByZWNpc2VseSB0aGUgaGVpZ2h0cyBpbiB0aGUKICAgICAgICAgICAgICAgYXNzb2NpYXRlZCBsaXN0IG9mIGxvY2F0aW9ucyBoYXZlIGJlZW4gZGV0ZXJtaW5lZAogICAgICAgICAgICAgICB3aXRoIHJlc3BlY3QgdG8gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIGRlZmluZWQgYnkgdGhlCiAgICAgICAgICAgICAgIGdlb2RldGljLWRhdHVtLiAgRm9yIGV4YW1wbGUsIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgICAgICAgIHVuY2VydGFpbnR5IGR1ZSB0byBtZWFzdXJlbWVudCBlcnJvciBpZiBhbgogICAgICAgICAgICAgICBleHBlcmltZW50YWwgbWVhc3VyZW1lbnQgd2FzIG1hZGUgdG8gZGV0ZXJtaW5lIGVhY2gKICAgICAgICAgICAgICAgbG9jYXRpb24uIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgY2hvaWNlIGxvY2F0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlRoZSBsb2NhdGlvbiBkYXRhIGVpdGhlciBpbiBsYXRpdHVkZS9sb25naXR1ZGUgb3IKICAgICAgICAgICBDYXJ0ZXNpYW4gdmFsdWVzIjsKICAgICAgICBjYXNlIGVsbGlwc29pZCB7CiAgICAgICAgICBsZWFmIGxhdGl0dWRlIHsKICAgICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyAxNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIGxhdGl0dWRlIHZhbHVlIG9uIHRoZSBhc3Ryb25vbWljYWwgYm9keS4gIFRoZQogICAgICAgICAgICAgICBkZWZpbml0aW9uIGFuZCBwcmVjaXNpb24gb2YgdGhpcyBtZWFzdXJlbWVudCBpcwogICAgICAgICAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBsb25naXR1ZGUgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgbG9uZ2l0dWRlIHZhbHVlIG9uIHRoZSBhc3Ryb25vbWljYWwgYm9keS4gIFRoZQogICAgICAgICAgICAgICBkZWZpbml0aW9uIGFuZCBwcmVjaXNpb24gb2YgdGhpcyBtZWFzdXJlbWVudCBpcwogICAgICAgICAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBoZWlnaHQgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5pdHMgIm1ldGVycyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIkhlaWdodCBmcm9tIGEgcmVmZXJlbmNlIDAgdmFsdWUuICBUaGUgcHJlY2lzaW9uIGFuZAogICAgICAgICAgICAgICAnMCcgdmFsdWUgaXMgZGVmaW5lZCBieSB0aGUgcmVmZXJlbmNlLWZyYW1lLiI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhc2UgY2FydGVzaWFuIHsKICAgICAgICAgIGxlYWYgeCB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAibWV0ZXJzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIFggdmFsdWUgYXMgZGVmaW5lZCBieSB0aGUgcmVmZXJlbmNlLWZyYW1lLiI7CiAgICAgICAgICB9CiAgICAgICAgICBsZWFmIHkgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5pdHMgIm1ldGVycyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIlRoZSBZIHZhbHVlIGFzIGRlZmluZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiB6IHsKICAgICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyA2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuaXRzICJtZXRlcnMiOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgWiB2YWx1ZSBhcyBkZWZpbmVkIGJ5IHRoZSByZWZlcmVuY2UtZnJhbWUuIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgY29udGFpbmVyIHZlbG9jaXR5IHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIklmIHRoZSBvYmplY3QgaXMgaW4gbW90aW9uLCB0aGUgdmVsb2NpdHkgdmVjdG9yIGRlc2NyaWJlcwogICAgICAgICAgIHRoaXMgbW90aW9uIGF0IHRoZSB0aW1lIGdpdmVuIGJ5IHRoZSB0aW1lc3RhbXAuICBGb3IgYQogICAgICAgICAgIGZvcm11bGEgdG8gY29udmVydCB0aGVzZSB2YWx1ZXMgdG8gc3BlZWQgYW5kIGhlYWRpbmcsIHNlZQogICAgICAgICAgIFJGQyA5MTc5LiI7CiAgICAgICAgcmVmZXJlbmNlCiAgICAgICAgICAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwoKICAgICAgICBsZWFmIHYtbm9ydGggewogICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTI7CiAgICAgICAgICB9CiAgICAgICAgICB1bml0cyAibWV0ZXJzIHBlciBzZWNvbmQiOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgInYtbm9ydGggaXMgdGhlIHJhdGUgb2YgY2hhbmdlIChpLmUuLCBzcGVlZCkgdG93YXJkcwogICAgICAgICAgICAgdHJ1ZSBub3J0aCBhcyBkZWZpbmVkIGJ5IHRoZSBnZW9kZXRpYy1zeXN0ZW0uIjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdi1lYXN0IHsKICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDEyOwogICAgICAgICAgfQogICAgICAgICAgdW5pdHMgIm1ldGVycyBwZXIgc2Vjb25kIjsKICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJ2LWVhc3QgaXMgdGhlIHJhdGUgb2YgY2hhbmdlIChpLmUuLCBzcGVlZCkgcGVycGVuZGljdWxhcgogICAgICAgICAgICAgdG8gdGhlIHJpZ2h0IG9mIHRydWUgbm9ydGggYXMgZGVmaW5lZCBieQogICAgICAgICAgICAgdGhlIGdlb2RldGljLXN5c3RlbS4iOwogICAgICAgIH0KCiAgICAgICAgbGVhZiB2LXVwIHsKICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDEyOwogICAgICAgICAgfQogICAgICAgICAgdW5pdHMgIm1ldGVycyBwZXIgc2Vjb25kIjsKICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJ2LXVwIGlzIHRoZSByYXRlIG9mIGNoYW5nZSAoaS5lLiwgc3BlZWQpIGF3YXkgZnJvbSB0aGUKICAgICAgICAgICAgIGNlbnRlciBvZiBtYXNzLiI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxlYWYgdGltZXN0YW1wIHsKICAgICAgICB0eXBlIHlhbmc6ZGF0ZS1hbmQtdGltZTsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlJlZmVyZW5jZSB0aW1lIHdoZW4gbG9jYXRpb24gd2FzIHJlY29yZGVkLiI7CiAgICAgIH0KICAgICAgbGVhZiB2YWxpZC11bnRpbCB7CiAgICAgICAgdHlwZSB5YW5nOmRhdGUtYW5kLXRpbWU7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICJUaGUgdGltZXN0YW1wIGZvciB3aGljaCB0aGlzIGdlby1sb2NhdGlvbiBpcyB2YWxpZCB1bnRpbC4KICAgICAgICAgICBJZiB1bnNwZWNpZmllZCwgdGhlIGdlby1sb2NhdGlvbiBoYXMgbm8gc3BlY2lmaWMKICAgICAgICAgICBleHBpcmF0aW9uIHRpbWUuIjsKICAgICAgfQogICAgfQogIH0KfQo=
 ietf-inet-types        urn:ietf:params:xml:ns:yang:ietf-inet-types     \N      []      2013-07-15      bW9kdWxlIGlldGYtaW5ldC10eXBlcyB7CgogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYtaW5ldC10eXBlcyI7CiAgcHJlZml4ICJpbmV0IjsKCiAgb3JnYW5pemF0aW9uCiAgICJJRVRGIE5FVE1PRCAoTkVUQ09ORiBEYXRhIE1vZGVsaW5nIExhbmd1YWdlKSBXb3JraW5nIEdyb3VwIjsKCiAgY29udGFjdAogICAiV0cgV2ViOiAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvd2cvbmV0bW9kLz4KICAgIFdHIExpc3Q6ICA8bWFpbHRvOm5ldG1vZEBpZXRmLm9yZz4KCiAgICBXRyBDaGFpcjogRGF2aWQgS2Vzc2VucwogICAgICAgICAgICAgIDxtYWlsdG86ZGF2aWQua2Vzc2Vuc0Buc24uY29tPgoKICAgIFdHIENoYWlyOiBKdWVyZ2VuIFNjaG9lbndhZWxkZXIKICAgICAgICAgICAgICA8bWFpbHRvOmouc2Nob2Vud2FlbGRlckBqYWNvYnMtdW5pdmVyc2l0eS5kZT4KCiAgICBFZGl0b3I6ICAgSnVlcmdlbiBTY2hvZW53YWVsZGVyCiAgICAgICAgICAgICAgPG1haWx0bzpqLnNjaG9lbndhZWxkZXJAamFjb2JzLXVuaXZlcnNpdHkuZGU+IjsKCiAgZGVzY3JpcHRpb24KICAgIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBnZW5lcmFsbHkgdXNlZnVsIGRlcml2ZWQKICAgIFlBTkcgZGF0YSB0eXBlcyBmb3IgSW50ZXJuZXQgYWRkcmVzc2VzIGFuZCByZWxhdGVkIHRoaW5ncy4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcwogICAgYXV0aG9ycyBvZiB0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvcgogICAgd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwdXJzdWFudCB0bywgYW5kIHN1YmplY3QKICAgIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGNvbnRhaW5lZCBpbiwgdGhlIFNpbXBsaWZpZWQgQlNEIExpY2Vuc2UKICAgIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUgSUVURiBUcnVzdCdzIExlZ2FsIFByb3Zpc2lvbnMKICAgIFJlbGF0aW5nIHRvIElFVEYgRG9jdW1lbnRzCiAgICAoaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICBUaGlzIHZlcnNpb24gb2YgdGhpcyBZQU5HIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA2OTkxOyBzZWUKICAgIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuIjsKCiAgcmV2aXNpb24gMjAxMy0wNy0xNSB7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHJldmlzaW9uIGFkZHMgdGhlIGZvbGxvd2luZyBuZXcgZGF0YSB0eXBlczoKICAgICAgLSBpcC1hZGRyZXNzLW5vLXpvbmUKICAgICAgLSBpcHY0LWFkZHJlc3Mtbm8tem9uZQogICAgICAtIGlwdjYtYWRkcmVzcy1uby16b25lIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjk5MTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICByZXZpc2lvbiAyMDEwLTA5LTI0IHsKICAgIGRlc2NyaXB0aW9uCiAgICAgIkluaXRpYWwgcmV2aXNpb24uIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjAyMTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgdHlwZXMgcmVsYXRlZCB0byBwcm90b2NvbCBmaWVsZHMgKioqLwoKICB0eXBlZGVmIGlwLXZlcnNpb24gewogICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgIGVudW0gdW5rbm93biB7CiAgICAgICAgdmFsdWUgIjAiOwogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICJBbiB1bmtub3duIG9yIHVuc3BlY2lmaWVkIHZlcnNpb24gb2YgdGhlIEludGVybmV0CiAgICAgICAgICBwcm90b2NvbC4iOwogICAgICB9CiAgICAgIGVudW0gaXB2NCB7CiAgICAgICAgdmFsdWUgIjEiOwogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICJUaGUgSVB2NCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJGQyA3OTEuIjsKICAgICAgfQogICAgICBlbnVtIGlwdjYgewogICAgICAgIHZhbHVlICIyIjsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAiVGhlIElQdjYgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiBSRkMgMjQ2MC4iOwogICAgICB9CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgdGhlIElQIHByb3RvY29sLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIEluZXRWZXJzaW9uIHRleHR1YWwgY29udmVudGlvbiBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgIDc5MTogSW50ZXJuZXQgUHJvdG9jb2wKICAgICAgUkZDIDI0NjA6IEludGVybmV0IFByb3RvY29sLCBWZXJzaW9uIDYgKElQdjYpIFNwZWNpZmljYXRpb24KICAgICAgUkZDIDQwMDE6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIEludGVybmV0IE5ldHdvcmsgQWRkcmVzc2VzIjsKICB9CgogIHR5cGVkZWYgZHNjcCB7CiAgICB0eXBlIHVpbnQ4IHsKICAgICAgcmFuZ2UgIjAuLjYzIjsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBkc2NwIHR5cGUgcmVwcmVzZW50cyBhIERpZmZlcmVudGlhdGVkIFNlcnZpY2VzIENvZGUgUG9pbnQKICAgICAgdGhhdCBtYXkgYmUgdXNlZCBmb3IgbWFya2luZyBwYWNrZXRzIGluIGEgdHJhZmZpYyBzdHJlYW0uCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBEc2NwIHRleHR1YWwgY29udmVudGlvbiBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMzI4OTogTWFuYWdlbWVudCBJbmZvcm1hdGlvbiBCYXNlIGZvciB0aGUgRGlmZmVyZW50aWF0ZWQKICAgICAgICAgICAgICAgIFNlcnZpY2VzIEFyY2hpdGVjdHVyZQogICAgICBSRkMgMjQ3NDogRGVmaW5pdGlvbiBvZiB0aGUgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgRmllbGQKICAgICAgICAgICAgICAgIChEUyBGaWVsZCkgaW4gdGhlIElQdjQgYW5kIElQdjYgSGVhZGVycwogICAgICBSRkMgMjc4MDogSUFOQSBBbGxvY2F0aW9uIEd1aWRlbGluZXMgRm9yIFZhbHVlcyBJbgogICAgICAgICAgICAgICAgdGhlIEludGVybmV0IFByb3RvY29sIGFuZCBSZWxhdGVkIEhlYWRlcnMiOwogIH0KCiAgdHlwZWRlZiBpcHY2LWZsb3ctbGFiZWwgewogICAgdHlwZSB1aW50MzIgewogICAgICByYW5nZSAiMC4uMTA0ODU3NSI7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXB2Ni1mbG93LWxhYmVsIHR5cGUgcmVwcmVzZW50cyB0aGUgZmxvdyBpZGVudGlmaWVyIG9yIEZsb3cKICAgICAgTGFiZWwgaW4gYW4gSVB2NiBwYWNrZXQgaGVhZGVyIHRoYXQgbWF5IGJlIHVzZWQgdG8KICAgICAgZGlzY3JpbWluYXRlIHRyYWZmaWMgZmxvd3MuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgSVB2NkZsb3dMYWJlbCB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDM1OTU6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIElQdjYgRmxvdyBMYWJlbAogICAgICBSRkMgMjQ2MDogSW50ZXJuZXQgUHJvdG9jb2wsIFZlcnNpb24gNiAoSVB2NikgU3BlY2lmaWNhdGlvbiI7CiAgfQoKICB0eXBlZGVmIHBvcnQtbnVtYmVyIHsKICAgIHR5cGUgdWludDE2IHsKICAgICAgcmFuZ2UgIjAuLjY1NTM1IjsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBwb3J0LW51bWJlciB0eXBlIHJlcHJlc2VudHMgYSAxNi1iaXQgcG9ydCBudW1iZXIgb2YgYW4KICAgICAgSW50ZXJuZXQgdHJhbnNwb3J0LWxheWVyIHByb3RvY29sIHN1Y2ggYXMgVURQLCBUQ1AsIERDQ1AsIG9yCiAgICAgIFNDVFAuICBQb3J0IG51bWJlcnMgYXJlIGFzc2lnbmVkIGJ5IElBTkEuICBBIGN1cnJlbnQgbGlzdCBvZgogICAgICBhbGwgYXNzaWdubWVudHMgaXMgYXZhaWxhYmxlIGZyb20gPGh0dHA6Ly93d3cuaWFuYS5vcmcvPi4KCiAgICAgIE5vdGUgdGhhdCB0aGUgcG9ydCBudW1iZXIgdmFsdWUgemVybyBpcyByZXNlcnZlZCBieSBJQU5BLiAgSW4KICAgICAgc2l0dWF0aW9ucyB3aGVyZSB0aGUgdmFsdWUgemVybyBkb2VzIG5vdCBtYWtlIHNlbnNlLCBpdCBjYW4KICAgICAgYmUgZXhjbHVkZWQgYnkgc3VidHlwaW5nIHRoZSBwb3J0LW51bWJlciB0eXBlLgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgSW5ldFBvcnROdW1iZXIgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAgNzY4OiBVc2VyIERhdGFncmFtIFByb3RvY29sCiAgICAgIFJGQyAgNzkzOiBUcmFuc21pc3Npb24gQ29udHJvbCBQcm90b2NvbAogICAgICBSRkMgNDk2MDogU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sCiAgICAgIFJGQyA0MzQwOiBEYXRhZ3JhbSBDb25nZXN0aW9uIENvbnRyb2wgUHJvdG9jb2wgKERDQ1ApCiAgICAgIFJGQyA0MDAxOiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBJbnRlcm5ldCBOZXR3b3JrIEFkZHJlc3NlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgdHlwZXMgcmVsYXRlZCB0byBhdXRvbm9tb3VzIHN5c3RlbXMgKioqLwoKICB0eXBlZGVmIGFzLW51bWJlciB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBhcy1udW1iZXIgdHlwZSByZXByZXNlbnRzIGF1dG9ub21vdXMgc3lzdGVtIG51bWJlcnMKICAgICAgd2hpY2ggaWRlbnRpZnkgYW4gQXV0b25vbW91cyBTeXN0ZW0gKEFTKS4gIEFuIEFTIGlzIGEgc2V0CiAgICAgIG9mIHJvdXRlcnMgdW5kZXIgYSBzaW5nbGUgdGVjaG5pY2FsIGFkbWluaXN0cmF0aW9uLCB1c2luZwogICAgICBhbiBpbnRlcmlvciBnYXRld2F5IHByb3RvY29sIGFuZCBjb21tb24gbWV0cmljcyB0byByb3V0ZQogICAgICBwYWNrZXRzIHdpdGhpbiB0aGUgQVMsIGFuZCB1c2luZyBhbiBleHRlcmlvciBnYXRld2F5CiAgICAgIHByb3RvY29sIHRvIHJvdXRlIHBhY2tldHMgdG8gb3RoZXIgQVNlcy4gIElBTkEgbWFpbnRhaW5zCiAgICAgIHRoZSBBUyBudW1iZXIgc3BhY2UgYW5kIGhhcyBkZWxlZ2F0ZWQgbGFyZ2UgcGFydHMgdG8gdGhlCiAgICAgIHJlZ2lvbmFsIHJlZ2lzdHJpZXMuCgogICAgICBBdXRvbm9tb3VzIHN5c3RlbSBudW1iZXJzIHdlcmUgb3JpZ2luYWxseSBsaW1pdGVkIHRvIDE2CiAgICAgIGJpdHMuICBCR1AgZXh0ZW5zaW9ucyBoYXZlIGVubGFyZ2VkIHRoZSBhdXRvbm9tb3VzIHN5c3RlbQogICAgICBudW1iZXIgc3BhY2UgdG8gMzIgYml0cy4gIFRoaXMgdHlwZSB0aGVyZWZvcmUgdXNlcyBhbiB1aW50MzIKICAgICAgYmFzZSB0eXBlIHdpdGhvdXQgYSByYW5nZSByZXN0cmljdGlvbiBpbiBvcmRlciB0byBzdXBwb3J0CiAgICAgIGEgbGFyZ2VyIGF1dG9ub21vdXMgc3lzdGVtIG51bWJlciBzcGFjZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBJbmV0QXV0b25vbW91c1N5c3RlbU51bWJlciB0ZXh0dWFsIGNvbnZlbnRpb24gb2YKICAgICAgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDE5MzA6IEd1aWRlbGluZXMgZm9yIGNyZWF0aW9uLCBzZWxlY3Rpb24sIGFuZCByZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgIG9mIGFuIEF1dG9ub21vdXMgU3lzdGVtIChBUykKICAgICAgUkZDIDQyNzE6IEEgQm9yZGVyIEdhdGV3YXkgUHJvdG9jb2wgNCAoQkdQLTQpCiAgICAgIFJGQyA0MDAxOiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBJbnRlcm5ldCBOZXR3b3JrIEFkZHJlc3NlcwogICAgICBSRkMgNjc5MzogQkdQIFN1cHBvcnQgZm9yIEZvdXItT2N0ZXQgQXV0b25vbW91cyBTeXN0ZW0gKEFTKQogICAgICAgICAgICAgICAgTnVtYmVyIFNwYWNlIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiB0eXBlcyByZWxhdGVkIHRvIElQIGFkZHJlc3NlcyBhbmQgaG9zdG5hbWVzICoqKi8KCiAgdHlwZWRlZiBpcC1hZGRyZXNzIHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzOwogICAgICB0eXBlIGluZXQ6aXB2Ni1hZGRyZXNzOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGlwLWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQIGFkZHJlc3MgYW5kIGlzIElQCiAgICAgIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24KICAgICAgaW1wbGllcyB0aGUgSVAgdmVyc2lvbi4gIFRoaXMgdHlwZSBzdXBwb3J0cyBzY29wZWQgYWRkcmVzc2VzCiAgICAgIGJ5IGFsbG93aW5nIHpvbmUgaWRlbnRpZmllcnMgaW4gdGhlIGFkZHJlc3MgZm9ybWF0LiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDQwMDc6IElQdjYgU2NvcGVkIEFkZHJlc3MgQXJjaGl0ZWN0dXJlIjsKICB9CgogIHR5cGVkZWYgaXB2NC1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybgogICAgICAgICcoKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcLil7M30nCiAgICAgICsgICcoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKScKICAgICAgKyAnKCVbXHB7Tn1ccHtMfV0rKT8nOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIlRoZSBpcHY0LWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyBpbgogICAgICAgZG90dGVkLXF1YWQgbm90YXRpb24uICBUaGUgSVB2NCBhZGRyZXNzIG1heSBpbmNsdWRlIGEgem9uZQogICAgICAgaW5kZXgsIHNlcGFyYXRlZCBieSBhICUgc2lnbi4KCiAgICAgICBUaGUgem9uZSBpbmRleCBpcyB1c2VkIHRvIGRpc2FtYmlndWF0ZSBpZGVudGljYWwgYWRkcmVzcwogICAgICAgdmFsdWVzLiAgRm9yIGxpbmstbG9jYWwgYWRkcmVzc2VzLCB0aGUgem9uZSBpbmRleCB3aWxsCiAgICAgICB0eXBpY2FsbHkgYmUgdGhlIGludGVyZmFjZSBpbmRleCBudW1iZXIgb3IgdGhlIG5hbWUgb2YgYW4KICAgICAgIGludGVyZmFjZS4gIElmIHRoZSB6b25lIGluZGV4IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdAogICAgICAgem9uZSBvZiB0aGUgZGV2aWNlIHdpbGwgYmUgdXNlZC4KCiAgICAgICBUaGUgY2Fub25pY2FsIGZvcm1hdCBmb3IgdGhlIHpvbmUgaW5kZXggaXMgdGhlIG51bWVyaWNhbAogICAgICAgZm9ybWF0IjsKICB9CgogIHR5cGVkZWYgaXB2Ni1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKCg6fFswLTlhLWZBLUZdezAsNH0pOikoWzAtOWEtZkEtRl17MCw0fTopezAsNX0nCiAgICAgICAgICAgICsgJygoKFswLTlhLWZBLUZdezAsNH06KT8oOnxbMC05YS1mQS1GXXswLDR9KSl8JwogICAgICAgICAgICArICcoKCgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV0/WzAtOV0pXC4pezN9JwogICAgICAgICAgICArICcoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKSkpJwogICAgICAgICAgICArICcoJVtccHtOfVxwe0x9XSspPyc7CiAgICAgIHBhdHRlcm4gJygoW146XSs6KXs2fSgoW146XSs6W146XSspfCguKlwuLiopKSl8JwogICAgICAgICAgICArICcoKChbXjpdKzopKlteOl0rKT86OigoW146XSs6KSpbXjpdKyk/KScKICAgICAgICAgICAgKyAnKCUuKyk/JzsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcHY2LWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQdjYgYWRkcmVzcyBpbiBmdWxsLAogICAgICBtaXhlZCwgc2hvcnRlbmVkLCBhbmQgc2hvcnRlbmVkLW1peGVkIG5vdGF0aW9uLiAgVGhlIElQdjYKICAgICAgYWRkcmVzcyBtYXkgaW5jbHVkZSBhIHpvbmUgaW5kZXgsIHNlcGFyYXRlZCBieSBhICUgc2lnbi4KCiAgICAgIFRoZSB6b25lIGluZGV4IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGlkZW50aWNhbCBhZGRyZXNzCiAgICAgIHZhbHVlcy4gIEZvciBsaW5rLWxvY2FsIGFkZHJlc3NlcywgdGhlIHpvbmUgaW5kZXggd2lsbAogICAgICB0eXBpY2FsbHkgYmUgdGhlIGludGVyZmFjZSBpbmRleCBudW1iZXIgb3IgdGhlIG5hbWUgb2YgYW4KICAgICAgaW50ZXJmYWNlLiAgSWYgdGhlIHpvbmUgaW5kZXggaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0CiAgICAgIHpvbmUgb2YgdGhlIGRldmljZSB3aWxsIGJlIHVzZWQuCgogICAgICBUaGUgY2Fub25pY2FsIGZvcm1hdCBvZiBJUHY2IGFkZHJlc3NlcyB1c2VzIHRoZSB0ZXh0dWFsCiAgICAgIHJlcHJlc2VudGF0aW9uIGRlZmluZWQgaW4gU2VjdGlvbiA0IG9mIFJGQyA1OTUyLiAgVGhlCiAgICAgIGNhbm9uaWNhbCBmb3JtYXQgZm9yIHRoZSB6b25lIGluZGV4IGlzIHRoZSBudW1lcmljYWwKICAgICAgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDExLjIgb2YgUkZDIDQwMDcuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDI5MTogSVAgVmVyc2lvbiA2IEFkZHJlc3NpbmcgQXJjaGl0ZWN0dXJlCiAgICAgIFJGQyA0MDA3OiBJUHY2IFNjb3BlZCBBZGRyZXNzIEFyY2hpdGVjdHVyZQogICAgICBSRkMgNTk1MjogQSBSZWNvbW1lbmRhdGlvbiBmb3IgSVB2NiBBZGRyZXNzIFRleHQKICAgICAgICAgICAgICAgIFJlcHJlc2VudGF0aW9uIjsKICB9CgogIHR5cGVkZWYgaXAtYWRkcmVzcy1uby16b25lIHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzLW5vLXpvbmU7CiAgICAgIHR5cGUgaW5ldDppcHY2LWFkZHJlc3Mtbm8tem9uZTsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcC1hZGRyZXNzLW5vLXpvbmUgdHlwZSByZXByZXNlbnRzIGFuIElQIGFkZHJlc3MgYW5kIGlzCiAgICAgIElQIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24KICAgICAgaW1wbGllcyB0aGUgSVAgdmVyc2lvbi4gIFRoaXMgdHlwZSBkb2VzIG5vdCBzdXBwb3J0IHNjb3BlZAogICAgICBhZGRyZXNzZXMgc2luY2UgaXQgZG9lcyBub3QgYWxsb3cgem9uZSBpZGVudGlmaWVycyBpbiB0aGUKICAgICAgYWRkcmVzcyBmb3JtYXQuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDAwNzogSVB2NiBTY29wZWQgQWRkcmVzcyBBcmNoaXRlY3R1cmUiOwogIH0KCiAgdHlwZWRlZiBpcHY0LWFkZHJlc3Mtbm8tem9uZSB7CiAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzIHsKICAgICAgcGF0dGVybiAnWzAtOVwuXSonOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIkFuIElQdjQgYWRkcmVzcyB3aXRob3V0IGEgem9uZSBpbmRleC4gIFRoaXMgdHlwZSwgZGVyaXZlZCBmcm9tCiAgICAgICBpcHY0LWFkZHJlc3MsIG1heSBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHpvbmUgaXMKICAgICAgIGtub3duIGZyb20gdGhlIGNvbnRleHQgYW5kIGhlbmNlIG5vIHpvbmUgaW5kZXggaXMgbmVlZGVkLiI7CiAgfQoKICB0eXBlZGVmIGlwdjYtYWRkcmVzcy1uby16b25lIHsKICAgIHR5cGUgaW5ldDppcHY2LWFkZHJlc3MgewogICAgICBwYXR0ZXJuICdbMC05YS1mQS1GOlwuXSonOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIkFuIElQdjYgYWRkcmVzcyB3aXRob3V0IGEgem9uZSBpbmRleC4gIFRoaXMgdHlwZSwgZGVyaXZlZCBmcm9tCiAgICAgICBpcHY2LWFkZHJlc3MsIG1heSBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHpvbmUgaXMKICAgICAgIGtub3duIGZyb20gdGhlIGNvbnRleHQgYW5kIGhlbmNlIG5vIHpvbmUgaW5kZXggaXMgbmVlZGVkLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDQyOTE6IElQIFZlcnNpb24gNiBBZGRyZXNzaW5nIEFyY2hpdGVjdHVyZQogICAgICBSRkMgNDAwNzogSVB2NiBTY29wZWQgQWRkcmVzcyBBcmNoaXRlY3R1cmUKICAgICAgUkZDIDU5NTI6IEEgUmVjb21tZW5kYXRpb24gZm9yIElQdjYgQWRkcmVzcyBUZXh0CiAgICAgICAgICAgICAgICBSZXByZXNlbnRhdGlvbiI7CiAgfQoKICB0eXBlZGVmIGlwLXByZWZpeCB7CiAgICB0eXBlIHVuaW9uIHsKICAgICAgdHlwZSBpbmV0OmlwdjQtcHJlZml4OwogICAgICB0eXBlIGluZXQ6aXB2Ni1wcmVmaXg7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXAtcHJlZml4IHR5cGUgcmVwcmVzZW50cyBhbiBJUCBwcmVmaXggYW5kIGlzIElQCiAgICAgIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb25zCiAgICAgIGltcGxpZXMgdGhlIElQIHZlcnNpb24uIjsKICB9CgogIHR5cGVkZWYgaXB2NC1wcmVmaXggewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuCiAgICAgICAgICcoKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcLil7M30nCiAgICAgICArICAnKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSknCiAgICAgICArICcvKChbMC05XSl8KFsxLTJdWzAtOV0pfCgzWzAtMl0pKSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXB2NC1wcmVmaXggdHlwZSByZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyBwcmVmaXguCiAgICAgIFRoZSBwcmVmaXggbGVuZ3RoIGlzIGdpdmVuIGJ5IHRoZSBudW1iZXIgZm9sbG93aW5nIHRoZQogICAgICBzbGFzaCBjaGFyYWN0ZXIgYW5kIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMyLgoKICAgICAgQSBwcmVmaXggbGVuZ3RoIHZhbHVlIG9mIG4gY29ycmVzcG9uZHMgdG8gYW4gSVAgYWRkcmVzcwogICAgICBtYXNrIHRoYXQgaGFzIG4gY29udGlndW91cyAxLWJpdHMgZnJvbSB0aGUgbW9zdAogICAgICBzaWduaWZpY2FudCBiaXQgKE1TQikgYW5kIGFsbCBvdGhlciBiaXRzIHNldCB0byAwLgoKICAgICAgVGhlIGNhbm9uaWNhbCBmb3JtYXQgb2YgYW4gSVB2NCBwcmVmaXggaGFzIGFsbCBiaXRzIG9mCiAgICAgIHRoZSBJUHY0IGFkZHJlc3Mgc2V0IHRvIHplcm8gdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlCiAgICAgIElQdjQgcHJlZml4LiI7CiAgfQoKICB0eXBlZGVmIGlwdjYtcHJlZml4IHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKCg6fFswLTlhLWZBLUZdezAsNH0pOikoWzAtOWEtZkEtRl17MCw0fTopezAsNX0nCiAgICAgICAgICAgICsgJygoKFswLTlhLWZBLUZdezAsNH06KT8oOnxbMC05YS1mQS1GXXswLDR9KSl8JwogICAgICAgICAgICArICcoKCgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV0/WzAtOV0pXC4pezN9JwogICAgICAgICAgICArICcoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKSkpJwogICAgICAgICAgICArICcoLygoWzAtOV0pfChbMC05XXsyfSl8KDFbMC0xXVswLTldKXwoMTJbMC04XSkpKSc7CiAgICAgIHBhdHRlcm4gJygoW146XSs6KXs2fSgoW146XSs6W146XSspfCguKlwuLiopKSl8JwogICAgICAgICAgICArICcoKChbXjpdKzopKlteOl0rKT86OigoW146XSs6KSpbXjpdKyk/KScKICAgICAgICAgICAgKyAnKC8uKyknOwogICAgfQoKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcHY2LXByZWZpeCB0eXBlIHJlcHJlc2VudHMgYW4gSVB2NiBhZGRyZXNzIHByZWZpeC4KICAgICAgVGhlIHByZWZpeCBsZW5ndGggaXMgZ2l2ZW4gYnkgdGhlIG51bWJlciBmb2xsb3dpbmcgdGhlCiAgICAgIHNsYXNoIGNoYXJhY3RlciBhbmQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTI4LgoKICAgICAgQSBwcmVmaXggbGVuZ3RoIHZhbHVlIG9mIG4gY29ycmVzcG9uZHMgdG8gYW4gSVAgYWRkcmVzcwogICAgICBtYXNrIHRoYXQgaGFzIG4gY29udGlndW91cyAxLWJpdHMgZnJvbSB0aGUgbW9zdAogICAgICBzaWduaWZpY2FudCBiaXQgKE1TQikgYW5kIGFsbCBvdGhlciBiaXRzIHNldCB0byAwLgoKICAgICAgVGhlIElQdjYgYWRkcmVzcyBzaG91bGQgaGF2ZSBhbGwgYml0cyB0aGF0IGRvIG5vdCBiZWxvbmcKICAgICAgdG8gdGhlIHByZWZpeCBzZXQgdG8gemVyby4KCiAgICAgIFRoZSBjYW5vbmljYWwgZm9ybWF0IG9mIGFuIElQdjYgcHJlZml4IGhhcyBhbGwgYml0cyBvZgogICAgICB0aGUgSVB2NiBhZGRyZXNzIHNldCB0byB6ZXJvIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZQogICAgICBJUHY2IHByZWZpeC4gIEZ1cnRoZXJtb3JlLCB0aGUgSVB2NiBhZGRyZXNzIGlzIHJlcHJlc2VudGVkCiAgICAgIGFzIGRlZmluZWQgaW4gU2VjdGlvbiA0IG9mIFJGQyA1OTUyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDU5NTI6IEEgUmVjb21tZW5kYXRpb24gZm9yIElQdjYgQWRkcmVzcyBUZXh0CiAgICAgICAgICAgICAgICBSZXByZXNlbnRhdGlvbiI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgZG9tYWluIG5hbWUgYW5kIFVSSSB0eXBlcyAqKiovCgogIHR5cGVkZWYgZG9tYWluLW5hbWUgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuCiAgICAgICAgJygoKFthLXpBLVowLTlfXShbYS16QS1aMC05XC1fXSl7MCw2MX0pP1thLXpBLVowLTldXC4pKicKICAgICAgKyAnKFthLXpBLVowLTlfXShbYS16QS1aMC05XC1fXSl7MCw2MX0pP1thLXpBLVowLTldXC4/KScKICAgICAgKyAnfFwuJzsKICAgICAgbGVuZ3RoICIxLi4yNTMiOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGRvbWFpbi1uYW1lIHR5cGUgcmVwcmVzZW50cyBhIEROUyBkb21haW4gbmFtZS4gIFRoZQogICAgICBuYW1lIFNIT1VMRCBiZSBmdWxseSBxdWFsaWZpZWQgd2hlbmV2ZXIgcG9zc2libGUuCgogICAgICBJbnRlcm5ldCBkb21haW4gbmFtZXMgYXJlIG9ubHkgbG9vc2VseSBzcGVjaWZpZWQuICBTZWN0aW9uCiAgICAgIDMuNSBvZiBSRkMgMTAzNCByZWNvbW1lbmRzIGEgc3ludGF4IChtb2RpZmllZCBpbiBTZWN0aW9uCiAgICAgIDIuMSBvZiBSRkMgMTEyMykuICBUaGUgcGF0dGVybiBhYm92ZSBpcyBpbnRlbmRlZCB0byBhbGxvdwogICAgICBmb3IgY3VycmVudCBwcmFjdGljZSBpbiBkb21haW4gbmFtZSB1c2UsIGFuZCBzb21lIHBvc3NpYmxlCiAgICAgIGZ1dHVyZSBleHBhbnNpb24uICBJdCBpcyBkZXNpZ25lZCB0byBob2xkIHZhcmlvdXMgdHlwZXMgb2YKICAgICAgZG9tYWluIG5hbWVzLCBpbmNsdWRpbmcgbmFtZXMgdXNlZCBmb3IgQSBvciBBQUFBIHJlY29yZHMKICAgICAgKGhvc3QgbmFtZXMpIGFuZCBvdGhlciByZWNvcmRzLCBzdWNoIGFzIFNSViByZWNvcmRzLiAgTm90ZQogICAgICB0aGF0IEludGVybmV0IGhvc3QgbmFtZXMgaGF2ZSBhIHN0cmljdGVyIHN5bnRheCAoZGVzY3JpYmVkCiAgICAgIGluIFJGQyA5NTIpIHRoYW4gdGhlIEROUyByZWNvbW1lbmRhdGlvbnMgaW4gUkZDcyAxMDM0IGFuZAogICAgICAxMTIzLCBhbmQgdGhhdCBzeXN0ZW1zIHRoYXQgd2FudCB0byBzdG9yZSBob3N0IG5hbWVzIGluCiAgICAgIHNjaGVtYSBub2RlcyB1c2luZyB0aGUgZG9tYWluLW5hbWUgdHlwZSBhcmUgcmVjb21tZW5kZWQgdG8KICAgICAgYWRoZXJlIHRvIHRoaXMgc3RyaWN0ZXIgc3RhbmRhcmQgdG8gZW5zdXJlIGludGVyb3BlcmFiaWxpdHkuCgogICAgICBUaGUgZW5jb2Rpbmcgb2YgRE5TIG5hbWVzIGluIHRoZSBETlMgcHJvdG9jb2wgaXMgbGltaXRlZAogICAgICB0byAyNTUgY2hhcmFjdGVycy4gIFNpbmNlIHRoZSBlbmNvZGluZyBjb25zaXN0cyBvZiBsYWJlbHMKICAgICAgcHJlZml4ZWQgYnkgYSBsZW5ndGggYnl0ZXMgYW5kIHRoZXJlIGlzIGEgdHJhaWxpbmcgTlVMTAogICAgICBieXRlLCBvbmx5IDI1MyBjaGFyYWN0ZXJzIGNhbiBhcHBlYXIgaW4gdGhlIHRleHR1YWwgZG90dGVkCiAgICAgIG5vdGF0aW9uLgoKICAgICAgVGhlIGRlc2NyaXB0aW9uIGNsYXVzZSBvZiBzY2hlbWEgbm9kZXMgdXNpbmcgdGhlIGRvbWFpbi1uYW1lCiAgICAgIHR5cGUgTVVTVCBkZXNjcmliZSB3aGVuIGFuZCBob3cgdGhlc2UgbmFtZXMgYXJlIHJlc29sdmVkIHRvCiAgICAgIElQIGFkZHJlc3Nlcy4gIE5vdGUgdGhhdCB0aGUgcmVzb2x1dGlvbiBvZiBhIGRvbWFpbi1uYW1lIHZhbHVlCiAgICAgIG1heSByZXF1aXJlIHRvIHF1ZXJ5IG11bHRpcGxlIEROUyByZWNvcmRzIChlLmcuLCBBIGZvciBJUHY0CiAgICAgIGFuZCBBQUFBIGZvciBJUHY2KS4gIFRoZSBvcmRlciBvZiB0aGUgcmVzb2x1dGlvbiBwcm9jZXNzIGFuZAogICAgICB3aGljaCBETlMgcmVjb3JkIHRha2VzIHByZWNlZGVuY2UgY2FuIGVpdGhlciBiZSBkZWZpbmVkCiAgICAgIGV4cGxpY2l0bHkgb3IgbWF5IGRlcGVuZCBvbiB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUKICAgICAgcmVzb2x2ZXIuCgogICAgICBEb21haW4tbmFtZSB2YWx1ZXMgdXNlIHRoZSBVUy1BU0NJSSBlbmNvZGluZy4gIFRoZWlyIGNhbm9uaWNhbAogICAgICBmb3JtYXQgdXNlcyBsb3dlcmNhc2UgVVMtQVNDSUkgY2hhcmFjdGVycy4gIEludGVybmF0aW9uYWxpemVkCiAgICAgIGRvbWFpbiBuYW1lcyBNVVNUIGJlIEEtbGFiZWxzIGFzIHBlciBSRkMgNTg5MC4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAgOTUyOiBEb0QgSW50ZXJuZXQgSG9zdCBUYWJsZSBTcGVjaWZpY2F0aW9uCiAgICAgIFJGQyAxMDM0OiBEb21haW4gTmFtZXMgLSBDb25jZXB0cyBhbmQgRmFjaWxpdGllcwogICAgICBSRkMgMTEyMzogUmVxdWlyZW1lbnRzIGZvciBJbnRlcm5ldCBIb3N0cyAtLSBBcHBsaWNhdGlvbgogICAgICAgICAgICAgICAgYW5kIFN1cHBvcnQKICAgICAgUkZDIDI3ODI6IEEgRE5TIFJSIGZvciBzcGVjaWZ5aW5nIHRoZSBsb2NhdGlvbiBvZiBzZXJ2aWNlcwogICAgICAgICAgICAgICAgKEROUyBTUlYpCiAgICAgIFJGQyA1ODkwOiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgaW4gQXBwbGljYXRpb25zCiAgICAgICAgICAgICAgICAoSUROQSk6IERlZmluaXRpb25zIGFuZCBEb2N1bWVudCBGcmFtZXdvcmsiOwogIH0KCiAgdHlwZWRlZiBob3N0IHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXAtYWRkcmVzczsKICAgICAgdHlwZSBpbmV0OmRvbWFpbi1uYW1lOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGhvc3QgdHlwZSByZXByZXNlbnRzIGVpdGhlciBhbiBJUCBhZGRyZXNzIG9yIGEgRE5TCiAgICAgIGRvbWFpbiBuYW1lLiI7CiAgfQoKICB0eXBlZGVmIHVyaSB7CiAgICB0eXBlIHN0cmluZzsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB1cmkgdHlwZSByZXByZXNlbnRzIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyCiAgICAgIChVUkkpIGFzIGRlZmluZWQgYnkgU1REIDY2LgoKICAgICAgT2JqZWN0cyB1c2luZyB0aGUgdXJpIHR5cGUgTVVTVCBiZSBpbiBVUy1BU0NJSSBlbmNvZGluZywKICAgICAgYW5kIE1VU1QgYmUgbm9ybWFsaXplZCBhcyBkZXNjcmliZWQgYnkgUkZDIDM5ODYgU2VjdGlvbnMKICAgICAgNi4yLjEsIDYuMi4yLjEsIGFuZCA2LjIuMi4yLiAgQWxsIHVubmVjZXNzYXJ5CiAgICAgIHBlcmNlbnQtZW5jb2RpbmcgaXMgcmVtb3ZlZCwgYW5kIGFsbCBjYXNlLWluc2Vuc2l0aXZlCiAgICAgIGNoYXJhY3RlcnMgYXJlIHNldCB0byBsb3dlcmNhc2UgZXhjZXB0IGZvciBoZXhhZGVjaW1hbAogICAgICBkaWdpdHMsIHdoaWNoIGFyZSBub3JtYWxpemVkIHRvIHVwcGVyY2FzZSBhcyBkZXNjcmliZWQgaW4KICAgICAgU2VjdGlvbiA2LjIuMi4xLgoKICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBub3JtYWxpemF0aW9uIGlzIHRvIGhlbHAgcHJvdmlkZQogICAgICB1bmlxdWUgVVJJcy4gIE5vdGUgdGhhdCB0aGlzIG5vcm1hbGl6YXRpb24gaXMgbm90CiAgICAgIHN1ZmZpY2llbnQgdG8gcHJvdmlkZSB1bmlxdWVuZXNzLiAgVHdvIFVSSXMgdGhhdCBhcmUKICAgICAgdGV4dHVhbGx5IGRpc3RpbmN0IGFmdGVyIHRoaXMgbm9ybWFsaXphdGlvbiBtYXkgc3RpbGwgYmUKICAgICAgZXF1aXZhbGVudC4KCiAgICAgIE9iamVjdHMgdXNpbmcgdGhlIHVyaSB0eXBlIG1heSByZXN0cmljdCB0aGUgc2NoZW1lcyB0aGF0CiAgICAgIHRoZXkgcGVybWl0LiAgRm9yIGV4YW1wbGUsICdkYXRhOicgYW5kICd1cm46JyBzY2hlbWVzCiAgICAgIG1pZ2h0IG5vdCBiZSBhcHByb3ByaWF0ZS4KCiAgICAgIEEgemVyby1sZW5ndGggVVJJIGlzIG5vdCBhIHZhbGlkIFVSSS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8KICAgICAgZXhwcmVzcyAnVVJJIGFic2VudCcgd2hlcmUgcmVxdWlyZWQuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgVXJpIFNNSXYyIHRleHR1YWwgY29udmVudGlvbiBkZWZpbmVkIGluIFJGQyA1MDE3LiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDM5ODY6IFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKTogR2VuZXJpYyBTeW50YXgKICAgICAgUkZDIDMzMDU6IFJlcG9ydCBmcm9tIHRoZSBKb2ludCBXM0MvSUVURiBVUkkgUGxhbm5pbmcgSW50ZXJlc3QKICAgICAgICAgICAgICAgIEdyb3VwOiBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzIChVUklzKSwgVVJMcywKICAgICAgICAgICAgICAgIGFuZCBVbmlmb3JtIFJlc291cmNlIE5hbWVzIChVUk5zKTogQ2xhcmlmaWNhdGlvbnMKICAgICAgICAgICAgICAgIGFuZCBSZWNvbW1lbmRhdGlvbnMKICAgICAgUkZDIDUwMTc6IE1JQiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBVbmlmb3JtIFJlc291cmNlCiAgICAgICAgICAgICAgICBJZGVudGlmaWVycyAoVVJJcykiOwogIH0KCn0K
 ietf-yang-types        urn:ietf:params:xml:ns:yang:ietf-yang-types     \N      []      2013-07-15      bW9kdWxlIGlldGYteWFuZy10eXBlcyB7CgogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYteWFuZy10eXBlcyI7CiAgcHJlZml4ICJ5YW5nIjsKCiAgb3JnYW5pemF0aW9uCiAgICJJRVRGIE5FVE1PRCAoTkVUQ09ORiBEYXRhIE1vZGVsaW5nIExhbmd1YWdlKSBXb3JraW5nIEdyb3VwIjsKCiAgY29udGFjdAogICAiV0cgV2ViOiAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvd2cvbmV0bW9kLz4KICAgIFdHIExpc3Q6ICA8bWFpbHRvOm5ldG1vZEBpZXRmLm9yZz4KCiAgICBXRyBDaGFpcjogRGF2aWQgS2Vzc2VucwogICAgICAgICAgICAgIDxtYWlsdG86ZGF2aWQua2Vzc2Vuc0Buc24uY29tPgoKICAgIFdHIENoYWlyOiBKdWVyZ2VuIFNjaG9lbndhZWxkZXIKICAgICAgICAgICAgICA8bWFpbHRvOmouc2Nob2Vud2FlbGRlckBqYWNvYnMtdW5pdmVyc2l0eS5kZT4KCiAgICBFZGl0b3I6ICAgSnVlcmdlbiBTY2hvZW53YWVsZGVyCiAgICAgICAgICAgICAgPG1haWx0bzpqLnNjaG9lbndhZWxkZXJAamFjb2JzLXVuaXZlcnNpdHkuZGU+IjsKCiAgZGVzY3JpcHRpb24KICAgIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBnZW5lcmFsbHkgdXNlZnVsIGRlcml2ZWQKICAgIFlBTkcgZGF0YSB0eXBlcy4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcwogICAgYXV0aG9ycyBvZiB0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvcgogICAgd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwdXJzdWFudCB0bywgYW5kIHN1YmplY3QKICAgIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGNvbnRhaW5lZCBpbiwgdGhlIFNpbXBsaWZpZWQgQlNEIExpY2Vuc2UKICAgIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUgSUVURiBUcnVzdCdzIExlZ2FsIFByb3Zpc2lvbnMKICAgIFJlbGF0aW5nIHRvIElFVEYgRG9jdW1lbnRzCiAgICAoaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICBUaGlzIHZlcnNpb24gb2YgdGhpcyBZQU5HIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA2OTkxOyBzZWUKICAgIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuIjsKCiAgcmV2aXNpb24gMjAxMy0wNy0xNSB7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHJldmlzaW9uIGFkZHMgdGhlIGZvbGxvd2luZyBuZXcgZGF0YSB0eXBlczoKICAgICAgLSB5YW5nLWlkZW50aWZpZXIKICAgICAgLSBoZXgtc3RyaW5nCiAgICAgIC0gdXVpZAogICAgICAtIGRvdHRlZC1xdWFkIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjk5MTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICByZXZpc2lvbiAyMDEwLTA5LTI0IHsKICAgIGRlc2NyaXB0aW9uCiAgICAgIkluaXRpYWwgcmV2aXNpb24uIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjAyMTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgY291bnRlciBhbmQgZ2F1Z2UgdHlwZXMgKioqLwoKICB0eXBlZGVmIGNvdW50ZXIzMiB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBjb3VudGVyMzIgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIKICAgICAgdGhhdCBtb25vdG9uaWNhbGx5IGluY3JlYXNlcyB1bnRpbCBpdCByZWFjaGVzIGEKICAgICAgbWF4aW11bSB2YWx1ZSBvZiAyXjMyLTEgKDQyOTQ5NjcyOTUgZGVjaW1hbCksIHdoZW4gaXQKICAgICAgd3JhcHMgYXJvdW5kIGFuZCBzdGFydHMgaW5jcmVhc2luZyBhZ2FpbiBmcm9tIHplcm8uCgogICAgICBDb3VudGVycyBoYXZlIG5vIGRlZmluZWQgJ2luaXRpYWwnIHZhbHVlLCBhbmQgdGh1cywgYQogICAgICBzaW5nbGUgdmFsdWUgb2YgYSBjb3VudGVyIGhhcyAoaW4gZ2VuZXJhbCkgbm8gaW5mb3JtYXRpb24KICAgICAgY29udGVudC4gIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nCiAgICAgIHZhbHVlIG5vcm1hbGx5IG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZQogICAgICBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIHNwZWNpZmllZCBpbiB0aGUKICAgICAgZGVzY3JpcHRpb24gb2YgYSBzY2hlbWEgbm9kZSB1c2luZyB0aGlzIHR5cGUuICBJZiBzdWNoCiAgICAgIG90aGVyIHRpbWVzIGNhbiBvY2N1ciwgZm9yIGV4YW1wbGUsIHRoZSBjcmVhdGlvbiBvZgogICAgICBhIHNjaGVtYSBub2RlIG9mIHR5cGUgY291bnRlcjMyIGF0IHRpbWVzIG90aGVyIHRoYW4KICAgICAgcmUtaW5pdGlhbGl6YXRpb24sIHRoZW4gYSBjb3JyZXNwb25kaW5nIHNjaGVtYSBub2RlCiAgICAgIHNob3VsZCBiZSBkZWZpbmVkLCB3aXRoIGFuIGFwcHJvcHJpYXRlIHR5cGUsIHRvIGluZGljYXRlCiAgICAgIHRoZSBsYXN0IGRpc2NvbnRpbnVpdHkuCgogICAgICBUaGUgY291bnRlcjMyIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjb25maWd1cmF0aW9uCiAgICAgIHNjaGVtYSBub2Rlcy4gIEEgZGVmYXVsdCBzdGF0ZW1lbnQgU0hPVUxEIE5PVCBiZSB1c2VkIGluCiAgICAgIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgY291bnRlcjMyLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIENvdW50ZXIzMiB0eXBlIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyNTc4OiBTdHJ1Y3R1cmUgb2YgTWFuYWdlbWVudCBJbmZvcm1hdGlvbiBWZXJzaW9uIDIKICAgICAgICAgICAgICAgIChTTUl2MikiOwogIH0KCiAgdHlwZWRlZiB6ZXJvLWJhc2VkLWNvdW50ZXIzMiB7CiAgICB0eXBlIHlhbmc6Y291bnRlcjMyOwogICAgZGVmYXVsdCAiMCI7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgemVyby1iYXNlZC1jb3VudGVyMzIgdHlwZSByZXByZXNlbnRzIGEgY291bnRlcjMyCiAgICAgIHRoYXQgaGFzIHRoZSBkZWZpbmVkICdpbml0aWFsJyB2YWx1ZSB6ZXJvLgoKICAgICAgQSBzY2hlbWEgbm9kZSBvZiB0aGlzIHR5cGUgd2lsbCBiZSBzZXQgdG8gemVybyAoMCkgb24gY3JlYXRpb24KICAgICAgYW5kIHdpbGwgdGhlcmVhZnRlciBpbmNyZWFzZSBtb25vdG9uaWNhbGx5IHVudGlsIGl0IHJlYWNoZXMKICAgICAgYSBtYXhpbXVtIHZhbHVlIG9mIDJeMzItMSAoNDI5NDk2NzI5NSBkZWNpbWFsKSwgd2hlbiBpdAogICAgICB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIFByb3ZpZGVkIHRoYXQgYW4gYXBwbGljYXRpb24gZGlzY292ZXJzIGEgbmV3IHNjaGVtYSBub2RlCiAgICAgIG9mIHRoaXMgdHlwZSB3aXRoaW4gdGhlIG1pbmltdW0gdGltZSB0byB3cmFwLCBpdCBjYW4gdXNlIHRoZQogICAgICAnaW5pdGlhbCcgdmFsdWUgYXMgYSBkZWx0YS4gIEl0IGlzIGltcG9ydGFudCBmb3IgYSBtYW5hZ2VtZW50CiAgICAgIHN0YXRpb24gdG8gYmUgYXdhcmUgb2YgdGhpcyBtaW5pbXVtIHRpbWUgYW5kIHRoZSBhY3R1YWwgdGltZQogICAgICBiZXR3ZWVuIHBvbGxzLCBhbmQgdG8gZGlzY2FyZCBkYXRhIGlmIHRoZSBhY3R1YWwgdGltZSBpcyB0b28KICAgICAgbG9uZyBvciB0aGVyZSBpcyBubyBkZWZpbmVkIG1pbmltdW0gdGltZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBaZXJvQmFzZWRDb3VudGVyMzIgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgICJSRkMgNDUwMjogUmVtb3RlIE5ldHdvcmsgTW9uaXRvcmluZyBNYW5hZ2VtZW50IEluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgQmFzZSBWZXJzaW9uIDIiOwogIH0KCiAgdHlwZWRlZiBjb3VudGVyNjQgewogICAgdHlwZSB1aW50NjQ7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgY291bnRlcjY0IHR5cGUgcmVwcmVzZW50cyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyCiAgICAgIHRoYXQgbW9ub3RvbmljYWxseSBpbmNyZWFzZXMgdW50aWwgaXQgcmVhY2hlcyBhCiAgICAgIG1heGltdW0gdmFsdWUgb2YgMl42NC0xICgxODQ0Njc0NDA3MzcwOTU1MTYxNSBkZWNpbWFsKSwKICAgICAgd2hlbiBpdCB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIENvdW50ZXJzIGhhdmUgbm8gZGVmaW5lZCAnaW5pdGlhbCcgdmFsdWUsIGFuZCB0aHVzLCBhCiAgICAgIHNpbmdsZSB2YWx1ZSBvZiBhIGNvdW50ZXIgaGFzIChpbiBnZW5lcmFsKSBubyBpbmZvcm1hdGlvbgogICAgICBjb250ZW50LiAgRGlzY29udGludWl0aWVzIGluIHRoZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcKICAgICAgdmFsdWUgbm9ybWFsbHkgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlCiAgICAgIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgc3BlY2lmaWVkIGluIHRoZQogICAgICBkZXNjcmlwdGlvbiBvZiBhIHNjaGVtYSBub2RlIHVzaW5nIHRoaXMgdHlwZS4gIElmIHN1Y2gKICAgICAgb3RoZXIgdGltZXMgY2FuIG9jY3VyLCBmb3IgZXhhbXBsZSwgdGhlIGNyZWF0aW9uIG9mCiAgICAgIGEgc2NoZW1hIG5vZGUgb2YgdHlwZSBjb3VudGVyNjQgYXQgdGltZXMgb3RoZXIgdGhhbgogICAgICByZS1pbml0aWFsaXphdGlvbiwgdGhlbiBhIGNvcnJlc3BvbmRpbmcgc2NoZW1hIG5vZGUKICAgICAgc2hvdWxkIGJlIGRlZmluZWQsIHdpdGggYW4gYXBwcm9wcmlhdGUgdHlwZSwgdG8gaW5kaWNhdGUKICAgICAgdGhlIGxhc3QgZGlzY29udGludWl0eS4KCiAgICAgIFRoZSBjb3VudGVyNjQgdHlwZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24KICAgICAgc2NoZW1hIG5vZGVzLiAgQSBkZWZhdWx0IHN0YXRlbWVudCBTSE9VTEQgTk9UIGJlIHVzZWQgaW4KICAgICAgY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBjb3VudGVyNjQuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgQ291bnRlcjY0IHR5cGUgb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDI1Nzg6IFN0cnVjdHVyZSBvZiBNYW5hZ2VtZW50IEluZm9ybWF0aW9uIFZlcnNpb24gMgogICAgICAgICAgICAgICAgKFNNSXYyKSI7CiAgfQoKICB0eXBlZGVmIHplcm8tYmFzZWQtY291bnRlcjY0IHsKICAgIHR5cGUgeWFuZzpjb3VudGVyNjQ7CiAgICBkZWZhdWx0ICIwIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB6ZXJvLWJhc2VkLWNvdW50ZXI2NCB0eXBlIHJlcHJlc2VudHMgYSBjb3VudGVyNjQgdGhhdAogICAgICBoYXMgdGhlIGRlZmluZWQgJ2luaXRpYWwnIHZhbHVlIHplcm8uCgogICAgICBBIHNjaGVtYSBub2RlIG9mIHRoaXMgdHlwZSB3aWxsIGJlIHNldCB0byB6ZXJvICgwKSBvbiBjcmVhdGlvbgogICAgICBhbmQgd2lsbCB0aGVyZWFmdGVyIGluY3JlYXNlIG1vbm90b25pY2FsbHkgdW50aWwgaXQgcmVhY2hlcwogICAgICBhIG1heGltdW0gdmFsdWUgb2YgMl42NC0xICgxODQ0Njc0NDA3MzcwOTU1MTYxNSBkZWNpbWFsKSwKICAgICAgd2hlbiBpdCB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIFByb3ZpZGVkIHRoYXQgYW4gYXBwbGljYXRpb24gZGlzY292ZXJzIGEgbmV3IHNjaGVtYSBub2RlCiAgICAgIG9mIHRoaXMgdHlwZSB3aXRoaW4gdGhlIG1pbmltdW0gdGltZSB0byB3cmFwLCBpdCBjYW4gdXNlIHRoZQogICAgICAnaW5pdGlhbCcgdmFsdWUgYXMgYSBkZWx0YS4gIEl0IGlzIGltcG9ydGFudCBmb3IgYSBtYW5hZ2VtZW50CiAgICAgIHN0YXRpb24gdG8gYmUgYXdhcmUgb2YgdGhpcyBtaW5pbXVtIHRpbWUgYW5kIHRoZSBhY3R1YWwgdGltZQogICAgICBiZXR3ZWVuIHBvbGxzLCBhbmQgdG8gZGlzY2FyZCBkYXRhIGlmIHRoZSBhY3R1YWwgdGltZSBpcyB0b28KICAgICAgbG9uZyBvciB0aGVyZSBpcyBubyBkZWZpbmVkIG1pbmltdW0gdGltZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBaZXJvQmFzZWRDb3VudGVyNjQgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyODU2OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBBZGRpdGlvbmFsIEhpZ2ggQ2FwYWNpdHkKICAgICAgICAgICAgICAgIERhdGEgVHlwZXMiOwogIH0KCiAgdHlwZWRlZiBnYXVnZTMyIHsKICAgIHR5cGUgdWludDMyOwogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGdhdWdlMzIgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIsIHdoaWNoCiAgICAgIG1heSBpbmNyZWFzZSBvciBkZWNyZWFzZSwgYnV0IHNoYWxsIG5ldmVyIGV4Y2VlZCBhIG1heGltdW0KICAgICAgdmFsdWUsIG5vciBmYWxsIGJlbG93IGEgbWluaW11bSB2YWx1ZS4gIFRoZSBtYXhpbXVtIHZhbHVlCiAgICAgIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gMl4zMi0xICg0Mjk0OTY3Mjk1IGRlY2ltYWwpLCBhbmQKICAgICAgdGhlIG1pbmltdW0gdmFsdWUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAwLiAgVGhlIHZhbHVlIG9mCiAgICAgIGEgZ2F1Z2UzMiBoYXMgaXRzIG1heGltdW0gdmFsdWUgd2hlbmV2ZXIgdGhlIGluZm9ybWF0aW9uCiAgICAgIGJlaW5nIG1vZGVsZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGl0cyBtYXhpbXVtCiAgICAgIHZhbHVlLCBhbmQgaGFzIGl0cyBtaW5pbXVtIHZhbHVlIHdoZW5ldmVyIHRoZSBpbmZvcm1hdGlvbgogICAgICBiZWluZyBtb2RlbGVkIGlzIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byBpdHMgbWluaW11bSB2YWx1ZS4KICAgICAgSWYgdGhlIGluZm9ybWF0aW9uIGJlaW5nIG1vZGVsZWQgc3Vic2VxdWVudGx5IGRlY3JlYXNlcwogICAgICBiZWxvdyAoaW5jcmVhc2VzIGFib3ZlKSB0aGUgbWF4aW11bSAobWluaW11bSkgdmFsdWUsIHRoZQogICAgICBnYXVnZTMyIGFsc28gZGVjcmVhc2VzIChpbmNyZWFzZXMpLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIEdhdWdlMzIgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgZ2F1Z2U2NCB7CiAgICB0eXBlIHVpbnQ2NDsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBnYXVnZTY0IHR5cGUgcmVwcmVzZW50cyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCB3aGljaAogICAgICBtYXkgaW5jcmVhc2Ugb3IgZGVjcmVhc2UsIGJ1dCBzaGFsbCBuZXZlciBleGNlZWQgYSBtYXhpbXVtCiAgICAgIHZhbHVlLCBub3IgZmFsbCBiZWxvdyBhIG1pbmltdW0gdmFsdWUuICBUaGUgbWF4aW11bSB2YWx1ZQogICAgICBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDJeNjQtMSAoMTg0NDY3NDQwNzM3MDk1NTE2MTUpLCBhbmQKICAgICAgdGhlIG1pbmltdW0gdmFsdWUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAwLiAgVGhlIHZhbHVlIG9mCiAgICAgIGEgZ2F1Z2U2NCBoYXMgaXRzIG1heGltdW0gdmFsdWUgd2hlbmV2ZXIgdGhlIGluZm9ybWF0aW9uCiAgICAgIGJlaW5nIG1vZGVsZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGl0cyBtYXhpbXVtCiAgICAgIHZhbHVlLCBhbmQgaGFzIGl0cyBtaW5pbXVtIHZhbHVlIHdoZW5ldmVyIHRoZSBpbmZvcm1hdGlvbgogICAgICBiZWluZyBtb2RlbGVkIGlzIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byBpdHMgbWluaW11bSB2YWx1ZS4KICAgICAgSWYgdGhlIGluZm9ybWF0aW9uIGJlaW5nIG1vZGVsZWQgc3Vic2VxdWVudGx5IGRlY3JlYXNlcwogICAgICBiZWxvdyAoaW5jcmVhc2VzIGFib3ZlKSB0aGUgbWF4aW11bSAobWluaW11bSkgdmFsdWUsIHRoZQogICAgICBnYXVnZTY0IGFsc28gZGVjcmVhc2VzIChpbmNyZWFzZXMpLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIENvdW50ZXJCYXNlZEdhdWdlNjQgU01JdjIgdGV4dHVhbCBjb252ZW50aW9uIGRlZmluZWQKICAgICAgaW4gUkZDIDI4NTYiOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyODU2OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBBZGRpdGlvbmFsIEhpZ2ggQ2FwYWNpdHkKICAgICAgICAgICAgICAgIERhdGEgVHlwZXMiOwogIH0KCiAgLyoqKiBjb2xsZWN0aW9uIG9mIGlkZW50aWZpZXItcmVsYXRlZCB0eXBlcyAqKiovCgogIHR5cGVkZWYgb2JqZWN0LWlkZW50aWZpZXIgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuICcoKFswLTFdKFwuWzEtM10/WzAtOV0pKXwoMlwuKDB8KFsxLTldXGQqKSkpKScKICAgICAgICAgICAgKyAnKFwuKDB8KFsxLTldXGQqKSkpKic7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgb2JqZWN0LWlkZW50aWZpZXIgdHlwZSByZXByZXNlbnRzIGFkbWluaXN0cmF0aXZlbHkKICAgICAgYXNzaWduZWQgbmFtZXMgaW4gYSByZWdpc3RyYXRpb24taGllcmFyY2hpY2FsLW5hbWUgdHJlZS4KCiAgICAgIFZhbHVlcyBvZiB0aGlzIHR5cGUgYXJlIGRlbm90ZWQgYXMgYSBzZXF1ZW5jZSBvZiBudW1lcmljYWwKICAgICAgbm9uLW5lZ2F0aXZlIHN1Yi1pZGVudGlmaWVyIHZhbHVlcy4gIEVhY2ggc3ViLWlkZW50aWZpZXIKICAgICAgdmFsdWUgTVVTVCBOT1QgZXhjZWVkIDJeMzItMSAoNDI5NDk2NzI5NSkuICBTdWItaWRlbnRpZmllcnMKICAgICAgYXJlIHNlcGFyYXRlZCBieSBzaW5nbGUgZG90cyBhbmQgd2l0aG91dCBhbnkgaW50ZXJtZWRpYXRlCiAgICAgIHdoaXRlc3BhY2UuCgogICAgICBUaGUgQVNOLjEgc3RhbmRhcmQgcmVzdHJpY3RzIHRoZSB2YWx1ZSBzcGFjZSBvZiB0aGUgZmlyc3QKICAgICAgc3ViLWlkZW50aWZpZXIgdG8gMCwgMSwgb3IgMi4gIEZ1cnRoZXJtb3JlLCB0aGUgdmFsdWUgc3BhY2UKICAgICAgb2YgdGhlIHNlY29uZCBzdWItaWRlbnRpZmllciBpcyByZXN0cmljdGVkIHRvIHRoZSByYW5nZQogICAgICAwIHRvIDM5IGlmIHRoZSBmaXJzdCBzdWItaWRlbnRpZmllciBpcyAwIG9yIDEuICBGaW5hbGx5LAogICAgICB0aGUgQVNOLjEgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBhbiBvYmplY3QgaWRlbnRpZmllcgogICAgICBoYXMgYWx3YXlzIGF0IGxlYXN0IHR3byBzdWItaWRlbnRpZmllcnMuICBUaGUgcGF0dGVybgogICAgICBjYXB0dXJlcyB0aGVzZSByZXN0cmljdGlvbnMuCgogICAgICBBbHRob3VnaCB0aGUgbnVtYmVyIG9mIHN1Yi1pZGVudGlmaWVycyBpcyBub3QgbGltaXRlZCwKICAgICAgbW9kdWxlIGRlc2lnbmVycyBzaG91bGQgcmVhbGl6ZSB0aGF0IHRoZXJlIG1heSBiZQogICAgICBpbXBsZW1lbnRhdGlvbnMgdGhhdCBzdGljayB3aXRoIHRoZSBTTUl2MiBsaW1pdCBvZiAxMjgKICAgICAgc3ViLWlkZW50aWZpZXJzLgoKICAgICAgVGhpcyB0eXBlIGlzIGEgc3VwZXJzZXQgb2YgdGhlIFNNSXYyIE9CSkVDVCBJREVOVElGSUVSIHR5cGUKICAgICAgc2luY2UgaXQgaXMgbm90IHJlc3RyaWN0ZWQgdG8gMTI4IHN1Yi1pZGVudGlmaWVycy4gIEhlbmNlLAogICAgICB0aGlzIHR5cGUgU0hPVUxEIE5PVCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgU01JdjIgT0JKRUNUCiAgICAgIElERU5USUZJRVIgdHlwZTsgdGhlIG9iamVjdC1pZGVudGlmaWVyLTEyOCB0eXBlIFNIT1VMRCBiZQogICAgICB1c2VkIGluc3RlYWQuIjsKICAgIHJlZmVyZW5jZQogICAgICJJU085ODM0LTE6IEluZm9ybWF0aW9uIHRlY2hub2xvZ3kgLS0gT3BlbiBTeXN0ZW1zCiAgICAgIEludGVyY29ubmVjdGlvbiAtLSBQcm9jZWR1cmVzIGZvciB0aGUgb3BlcmF0aW9uIG9mIE9TSQogICAgICBSZWdpc3RyYXRpb24gQXV0aG9yaXRpZXM6IEdlbmVyYWwgcHJvY2VkdXJlcyBhbmQgdG9wCiAgICAgIGFyY3Mgb2YgdGhlIEFTTi4xIE9iamVjdCBJZGVudGlmaWVyIHRyZWUiOwogIH0KCiAgdHlwZWRlZiBvYmplY3QtaWRlbnRpZmllci0xMjggewogICAgdHlwZSBvYmplY3QtaWRlbnRpZmllciB7CiAgICAgIHBhdHRlcm4gJ1xkKihcLlxkKil7MSwxMjd9JzsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoaXMgdHlwZSByZXByZXNlbnRzIG9iamVjdC1pZGVudGlmaWVycyByZXN0cmljdGVkIHRvIDEyOAogICAgICBzdWItaWRlbnRpZmllcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgT0JKRUNUIElERU5USUZJRVIgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgeWFuZy1pZGVudGlmaWVyIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgbGVuZ3RoICIxLi5tYXgiOwogICAgICBwYXR0ZXJuICdbYS16QS1aX11bYS16QS1aMC05XC1fLl0qJzsKICAgICAgcGF0dGVybiAnLnwuLnxbXnhYXS4qfC5bXm1NXS4qfC4uW15sTF0uKic7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICAiQSBZQU5HIGlkZW50aWZpZXIgc3RyaW5nIGFzIGRlZmluZWQgYnkgdGhlICdpZGVudGlmaWVyJwogICAgICAgcnVsZSBpbiBTZWN0aW9uIDEyIG9mIFJGQyA2MDIwLiAgQW4gaWRlbnRpZmllciBtdXN0CiAgICAgICBzdGFydCB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyIG9yIGFuIHVuZGVyc2NvcmUKICAgICAgIGZvbGxvd2VkIGJ5IGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiBhbHBoYWJldGljIG9yCiAgICAgICBudW1lcmljIGNoYXJhY3RlcnMsIHVuZGVyc2NvcmVzLCBoeXBoZW5zLCBvciBkb3RzLgoKICAgICAgIEEgWUFORyBpZGVudGlmaWVyIE1VU1QgTk9UIHN0YXJ0IHdpdGggYW55IHBvc3NpYmxlCiAgICAgICBjb21iaW5hdGlvbiBvZiB0aGUgbG93ZXJjYXNlIG9yIHVwcGVyY2FzZSBjaGFyYWN0ZXIKICAgICAgIHNlcXVlbmNlICd4bWwnLiI7CiAgICByZWZlcmVuY2UKICAgICAgIlJGQyA2MDIwOiBZQU5HIC0gQSBEYXRhIE1vZGVsaW5nIExhbmd1YWdlIGZvciB0aGUgTmV0d29yawogICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gUHJvdG9jb2wgKE5FVENPTkYpIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiB0eXBlcyByZWxhdGVkIHRvIGRhdGUgYW5kIHRpbWUqKiovCgogIHR5cGVkZWYgZGF0ZS1hbmQtdGltZSB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJ1xkezR9LVxkezJ9LVxkezJ9VFxkezJ9OlxkezJ9OlxkezJ9KFwuXGQrKT8nCiAgICAgICAgICAgICsgJyhafFtcK1wtXVxkezJ9OlxkezJ9KSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgZGF0ZS1hbmQtdGltZSB0eXBlIGlzIGEgcHJvZmlsZSBvZiB0aGUgSVNPIDg2MDEKICAgICAgc3RhbmRhcmQgZm9yIHJlcHJlc2VudGF0aW9uIG9mIGRhdGVzIGFuZCB0aW1lcyB1c2luZyB0aGUKICAgICAgR3JlZ29yaWFuIGNhbGVuZGFyLiAgVGhlIHByb2ZpbGUgaXMgZGVmaW5lZCBieSB0aGUKICAgICAgZGF0ZS10aW1lIHByb2R1Y3Rpb24gaW4gU2VjdGlvbiA1LjYgb2YgUkZDIDMzMzkuCgogICAgICBUaGUgZGF0ZS1hbmQtdGltZSB0eXBlIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGF0ZVRpbWUgWE1MCiAgICAgIHNjaGVtYSB0eXBlIHdpdGggdGhlIGZvbGxvd2luZyBub3RhYmxlIGV4Y2VwdGlvbnM6CgogICAgICAoYSkgVGhlIGRhdGUtYW5kLXRpbWUgdHlwZSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSB5ZWFycy4KCiAgICAgIChiKSBUaGUgZGF0ZS1hbmQtdGltZSB0aW1lLW9mZnNldCAtMDA6MDAgaW5kaWNhdGVzIGFuIHVua25vd24KICAgICAgICAgIHRpbWUgem9uZSAoc2VlIFJGQyAzMzM5KSB3aGlsZSAtMDA6MDAgYW5kICswMDowMCBhbmQgWgogICAgICAgICAgYWxsIHJlcHJlc2VudCB0aGUgc2FtZSB0aW1lIHpvbmUgaW4gZGF0ZVRpbWUuCgogICAgICAoYykgVGhlIGNhbm9uaWNhbCBmb3JtYXQgKHNlZSBiZWxvdykgb2YgZGF0YS1hbmQtdGltZSB2YWx1ZXMKICAgICAgICAgIGRpZmZlcnMgZnJvbSB0aGUgY2Fub25pY2FsIGZvcm1hdCB1c2VkIGJ5IHRoZSBkYXRlVGltZSBYTUwKICAgICAgICAgIHNjaGVtYSB0eXBlLCB3aGljaCByZXF1aXJlcyBhbGwgdGltZXMgdG8gYmUgaW4gVVRDIHVzaW5nCiAgICAgICAgICB0aGUgdGltZS1vZmZzZXQgJ1onLgoKICAgICAgVGhpcyB0eXBlIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBEYXRlQW5kVGltZSB0ZXh0dWFsCiAgICAgIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyIHNpbmNlIFJGQyAzMzM5IHVzZXMgYSBkaWZmZXJlbnQKICAgICAgc2VwYXJhdG9yIGJldHdlZW4gZnVsbC1kYXRlIGFuZCBmdWxsLXRpbWUgYW5kIHByb3ZpZGVzCiAgICAgIGhpZ2hlciByZXNvbHV0aW9uIG9mIHRpbWUtc2VjZnJhYy4KCiAgICAgIFRoZSBjYW5vbmljYWwgZm9ybWF0IGZvciBkYXRlLWFuZC10aW1lIHZhbHVlcyB3aXRoIGEga25vd24gdGltZQogICAgICB6b25lIHVzZXMgYSBudW1lcmljIHRpbWUgem9uZSBvZmZzZXQgdGhhdCBpcyBjYWxjdWxhdGVkIHVzaW5nCiAgICAgIHRoZSBkZXZpY2UncyBjb25maWd1cmVkIGtub3duIG9mZnNldCB0byBVVEMgdGltZS4gIEEgY2hhbmdlIG9mCiAgICAgIHRoZSBkZXZpY2UncyBvZmZzZXQgdG8gVVRDIHRpbWUgd2lsbCBjYXVzZSBkYXRlLWFuZC10aW1lIHZhbHVlcwogICAgICB0byBjaGFuZ2UgYWNjb3JkaW5nbHkuICBTdWNoIGNoYW5nZXMgbWlnaHQgaGFwcGVuIHBlcmlvZGljYWxseQogICAgICBpbiBjYXNlIGEgc2VydmVyIGZvbGxvd3MgYXV0b21hdGljYWxseSBkYXlsaWdodCBzYXZpbmcgdGltZQogICAgICAoRFNUKSB0aW1lIHpvbmUgb2Zmc2V0IGNoYW5nZXMuICBUaGUgY2Fub25pY2FsIGZvcm1hdCBmb3IKICAgICAgZGF0ZS1hbmQtdGltZSB2YWx1ZXMgd2l0aCBhbiB1bmtub3duIHRpbWUgem9uZSAodXN1YWxseQogICAgICByZWZlcnJpbmcgdG8gdGhlIG5vdGlvbiBvZiBsb2NhbCB0aW1lKSB1c2VzIHRoZSB0aW1lLW9mZnNldAogICAgICAtMDA6MDAuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMzMzOTogRGF0ZSBhbmQgVGltZSBvbiB0aGUgSW50ZXJuZXQ6IFRpbWVzdGFtcHMKICAgICAgUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyCiAgICAgIFhTRC1UWVBFUzogWE1MIFNjaGVtYSBQYXJ0IDI6IERhdGF0eXBlcyBTZWNvbmQgRWRpdGlvbiI7CiAgfQoKICB0eXBlZGVmIHRpbWV0aWNrcyB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB0aW1ldGlja3MgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgdGhhdAogICAgICByZXByZXNlbnRzIHRoZSB0aW1lLCBtb2R1bG8gMl4zMiAoNDI5NDk2NzI5NiBkZWNpbWFsKSwgaW4KICAgICAgaHVuZHJlZHRocyBvZiBhIHNlY29uZCBiZXR3ZWVuIHR3byBlcG9jaHMuICBXaGVuIGEgc2NoZW1hCiAgICAgIG5vZGUgaXMgZGVmaW5lZCB0aGF0IHVzZXMgdGhpcyB0eXBlLCB0aGUgZGVzY3JpcHRpb24gb2YKICAgICAgdGhlIHNjaGVtYSBub2RlIGlkZW50aWZpZXMgYm90aCBvZiB0aGUgcmVmZXJlbmNlIGVwb2Nocy4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBUaW1lVGlja3MgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgdGltZXN0YW1wIHsKICAgIHR5cGUgeWFuZzp0aW1ldGlja3M7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgdGltZXN0YW1wIHR5cGUgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgYW4gYXNzb2NpYXRlZAogICAgICB0aW1ldGlja3Mgc2NoZW1hIG5vZGUgYXQgd2hpY2ggYSBzcGVjaWZpYyBvY2N1cnJlbmNlCiAgICAgIGhhcHBlbmVkLiAgVGhlIHNwZWNpZmljIG9jY3VycmVuY2UgbXVzdCBiZSBkZWZpbmVkIGluIHRoZQogICAgICBkZXNjcmlwdGlvbiBvZiBhbnkgc2NoZW1hIG5vZGUgZGVmaW5lZCB1c2luZyB0aGlzIHR5cGUuICBXaGVuCiAgICAgIHRoZSBzcGVjaWZpYyBvY2N1cnJlbmNlIG9jY3VycmVkIHByaW9yIHRvIHRoZSBsYXN0IHRpbWUgdGhlCiAgICAgIGFzc29jaWF0ZWQgdGltZXRpY2tzIGF0dHJpYnV0ZSB3YXMgemVybywgdGhlbiB0aGUgdGltZXN0YW1wCiAgICAgIHZhbHVlIGlzIHplcm8uICBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhbGwgdGltZXN0YW1wIHZhbHVlcwogICAgICB0byBiZSByZXNldCB0byB6ZXJvIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBhc3NvY2lhdGVkIHRpbWV0aWNrcwogICAgICBhdHRyaWJ1dGUgcmVhY2hlcyA0OTcrIGRheXMgYW5kIHdyYXBzIGFyb3VuZCB0byB6ZXJvLgoKICAgICAgVGhlIGFzc29jaWF0ZWQgdGltZXRpY2tzIHNjaGVtYSBub2RlIG11c3QgYmUgc3BlY2lmaWVkCiAgICAgIGluIHRoZSBkZXNjcmlwdGlvbiBvZiBhbnkgc2NoZW1hIG5vZGUgdXNpbmcgdGhpcyB0eXBlLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIFRpbWVTdGFtcCB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiBnZW5lcmljIGFkZHJlc3MgdHlwZXMgKioqLwoKICB0eXBlZGVmIHBoeXMtYWRkcmVzcyB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJyhbMC05YS1mQS1GXXsyfSg6WzAtOWEtZkEtRl17Mn0pKik/JzsKICAgIH0KCiAgICBkZXNjcmlwdGlvbgogICAgICJSZXByZXNlbnRzIG1lZGlhLSBvciBwaHlzaWNhbC1sZXZlbCBhZGRyZXNzZXMgcmVwcmVzZW50ZWQKICAgICAgYXMgYSBzZXF1ZW5jZSBvY3RldHMsIGVhY2ggb2N0ZXQgcmVwcmVzZW50ZWQgYnkgdHdvIGhleGFkZWNpbWFsCiAgICAgIG51bWJlcnMuICBPY3RldHMgYXJlIHNlcGFyYXRlZCBieSBjb2xvbnMuICBUaGUgY2Fub25pY2FsCiAgICAgIHJlcHJlc2VudGF0aW9uIHVzZXMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgUGh5c0FkZHJlc3MgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyNTc5OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBTTUl2MiI7CiAgfQoKICB0eXBlZGVmIG1hYy1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnWzAtOWEtZkEtRl17Mn0oOlswLTlhLWZBLUZdezJ9KXs1fSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgbWFjLWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElFRUUgODAyIE1BQyBhZGRyZXNzLgogICAgICBUaGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIHVzZXMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgTWFjQWRkcmVzcyB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiSUVFRSA4MDI6IElFRUUgU3RhbmRhcmQgZm9yIExvY2FsIGFuZCBNZXRyb3BvbGl0YW4gQXJlYQogICAgICAgICAgICAgICAgTmV0d29ya3M6IE92ZXJ2aWV3IGFuZCBBcmNoaXRlY3R1cmUKICAgICAgUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiBYTUwtc3BlY2lmaWMgdHlwZXMgKioqLwoKICB0eXBlZGVmIHhwYXRoMS4wIHsKICAgIHR5cGUgc3RyaW5nOwogICAgZGVzY3JpcHRpb24KICAgICAiVGhpcyB0eXBlIHJlcHJlc2VudHMgYW4gWFBBVEggMS4wIGV4cHJlc3Npb24uCgogICAgICBXaGVuIGEgc2NoZW1hIG5vZGUgaXMgZGVmaW5lZCB0aGF0IHVzZXMgdGhpcyB0eXBlLCB0aGUKICAgICAgZGVzY3JpcHRpb24gb2YgdGhlIHNjaGVtYSBub2RlIE1VU1Qgc3BlY2lmeSB0aGUgWFBhdGgKICAgICAgY29udGV4dCBpbiB3aGljaCB0aGUgWFBhdGggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuIjsKICAgIHJlZmVyZW5jZQogICAgICJYUEFUSDogWE1MIFBhdGggTGFuZ3VhZ2UgKFhQYXRoKSBWZXJzaW9uIDEuMCI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2Ygc3RyaW5nIHR5cGVzICoqKi8KCiAgdHlwZWRlZiBoZXgtc3RyaW5nIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKFswLTlhLWZBLUZdezJ9KDpbMC05YS1mQS1GXXsyfSkqKT8nOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiQSBoZXhhZGVjaW1hbCBzdHJpbmcgd2l0aCBvY3RldHMgcmVwcmVzZW50ZWQgYXMgaGV4IGRpZ2l0cwogICAgICBzZXBhcmF0ZWQgYnkgY29sb25zLiAgVGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiB1c2VzCiAgICAgIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLiI7CiAgfQoKICB0eXBlZGVmIHV1aWQgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuICdbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS0nCiAgICAgICAgICAgICsgJ1swLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJBIFVuaXZlcnNhbGx5IFVuaXF1ZSBJRGVudGlmaWVyIGluIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24KICAgICAgZGVmaW5lZCBpbiBSRkMgNDEyMi4gIFRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gdXNlcwogICAgICBsb3dlcmNhc2UgY2hhcmFjdGVycy4KCiAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIFVVSUQgaW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uOgogICAgICBmODFkNGZhZS03ZGVjLTExZDAtYTc2NS0wMGEwYzkxZTZiZjYKICAgICAgIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDEyMjogQSBVbml2ZXJzYWxseSBVbmlxdWUgSURlbnRpZmllciAoVVVJRCkgVVJOCiAgICAgICAgICAgICAgICBOYW1lc3BhY2UiOwogIH0KCiAgdHlwZWRlZiBkb3R0ZWQtcXVhZCB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4KICAgICAgICAnKChbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXC4pezN9JwogICAgICArICcoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICAiQW4gdW5zaWduZWQgMzItYml0IG51bWJlciBleHByZXNzZWQgaW4gdGhlIGRvdHRlZC1xdWFkCiAgICAgICBub3RhdGlvbiwgaS5lLiwgZm91ciBvY3RldHMgd3JpdHRlbiBhcyBkZWNpbWFsIG51bWJlcnMKICAgICAgIGFuZCBzZXBhcmF0ZWQgd2l0aCB0aGUgJy4nIChmdWxsIHN0b3ApIGNoYXJhY3Rlci4iOwogIH0KfQo=
 o-ran-smo-teiv-cloud   urn:o-ran:smo-teiv-cloud        CLOUD   []      2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jbG91ZCI7CiAgICBwcmVmaXggb3ItdGVpdi1jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgaWV0Zi1nZW8tbG9jYXRpb24gewogICAgICAgIHByZWZpeCBnZW87CiAgICAgICAgcmVmZXJlbmNlICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgICB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gQ0xPVUQgZG9tYWluLCB3aGljaCBjb21wcmlzZXMgY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgYW5kCiAgICAgICAgZGVwbG95bWVudCBhc3BlY3RzIHRoYXQgY2FuIGJlIHVzZWQgaW4gdGhlIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkFkZGVkIGdyb3VwaW5ncywgT3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycCBvciBPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwCiAgICAgICAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdG9wb2xvZ3kgb2JqZWN0cy4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIENMT1VEOwoKICAgIGxpc3QgQ2xvdWRpZmllZE5GIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBSQU4gTmV0d29yayBGdW5jdGlvbiBzb2Z0d2FyZSB0aGF0IGlzIGRlcGxveWVkIGluIHRoZSBPLUNsb3VkIHZpYSBvbmUgb3IgbW9yZSBORiBEZXBsb3ltZW50cy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWRpZmllZCBORiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5GRGVwbG95bWVudCB7CiAgICAgICAgZGVzY3JpcHRpb24gIkEgc29mdHdhcmUgZGVwbG95bWVudCBvbiBPLUNsb3VkIHJlc291cmNlcyB0aGF0IHJlYWxpemVzLCBhbGwgb3IgcGFydCBvZiwgYSBDbG91ZGlmaWVkIE5GLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBORiBEZXBsb3ltZW50IjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiT0Nsb3VkTmFtZXNwYWNlIHByb3ZpZGUgYSBtZWNoYW5pc20gZm9yIGlzb2xhdGluZwogICAgICAgIGdyb3VwcyBvZiByZXNvdXJjZXMgd2l0aGluIGEgc2luZ2xlIGNsdXN0ZXIuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIENsb3VkIE5hbWVzcGFjZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5vZGVDbHVzdGVyIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBOb2RlQ2x1c3RlciBtYW5hZ2VzIGEgY29sbGVjdGlvbiBvZiBOb2Rlcy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgTm9kZSBDbHVzdGVyIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0Nsb3VkU2l0ZSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgdGhlIGluZnJhc3RydWN0dXJlIHRoYXQKICAgICAgICBob3N0cyB0aGUgTkYgRGVwbG95bWVudC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWQgU2l0ZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBDTE9VRElGSUVETkZfQ09NUFJJU0VTX05GREVQTE9ZTUVOVCB7IC8vIDEgdG8gMS4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGNvbXByaXNlZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWRpZmllZCBORiBjb21wcmlzZXMgb2YgdGhlc2UgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgQ2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBjb21wcmlzZWQtYnktY2xvdWRpZmllZE5GIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgcGFydCBvZiBDbG91ZGlmaWVkIE5GLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX0RFUExPWUVEX09OX09DTE9VRE5BTUVTUEFDRSB7IC8vIDEuLm4gdG8gMS4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGRlcGxveWVkLW9uLW9jbG91ZE5hbWVzcGFjZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IGRlcGxveWVkIG9uIE8tQ2xvdWQgTmFtZXNwYWNlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk9DbG91ZCBOYW1lc3BhY2UgZGVwbG95cyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBPQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0NMT1VETkFNRVNQQUNFX0RFUExPWUVEX09OX05PREVDTFVTVEVSIHsgLy8gMS4ubiB0byAxCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGRlcGxveWVkLW9uLW5vZGVDbHVzdGVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ2xvdWQgTmFtZXNwYWNlIGRlcGxveWVkIG9uIE5vZGUgQ2x1c3Rlci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0Nsb3VkTmFtZXNwYWNlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IGRlcGxveWVkLW9jbG91ZE5hbWVzcGFjZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOb2RlIENsdXN0ZXIgZGVwbG95cyBPLUNsb3VkIE5hbWVzcGFjZS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTm9kZUNsdXN0ZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTk9ERUNMVVNURVJfTE9DQVRFRF9BVF9PQ0xPVURTSVRFIHsgLy8gMS4ubiB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbG9jYXRlZC1hdC1vY2xvdWRTaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5vZGUgQ2x1c3RlciBsb2NhdGVkIGF0IE8tQ2xvdWQgU2l0ZS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTm9kZUNsdXN0ZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgbG9jYXRpb24tb2Ytb25vZGVDbHVzdGVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ2xvdWQgU2l0ZSBpcyBsb2NhdGlvbiBvZiBOb2RlIENsdXN0ZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE9DbG91ZFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9
-o-ran-smo-teiv-common-yang-extensions  urn:o-ran:smo-teiv-common-yang-extensions       \N      []      2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewoKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMiOwogIHByZWZpeCBvci10ZWl2LXlleHQ7CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgWUFORyBleHRlbnNpb25zIG1vZGVsCgogIFRoaXMgbW9kZWwgY29udGFpbnMgZXh0ZW5zaW9ucyB0byB0aGUgWUFORyBsYW5ndWFnZSB0aGF0IHRvcG9sb2d5IGFuZAogIGludmVudG9yeSBtb2RlbHMgd2lsbCB1c2UgdG8gZGVmaW5lIGFuZCBhbm5vdGF0ZSB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIGV4dGVuc2lvbiBiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJEZWZpbmVzIGEgYmktZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwIGluIHRoZSB0b3BvbG9neS4KCiAgICAgICAgICAgIEEgYmktZGlyZWN0aW9uYWwtYXNzb2NpYXRpb24gKEJEQSkgaXMgYSByZWxhdGlvbnNoaXAgY29tcHJpc2luZyBvZgogICAgICAgICAgICBhbiBBLXNpZGUgYW5kIGEgQi1zaWRlLiBUaGUgQS1zaWRlIGlzIGNvbnNpZGVyZWQgdGhlIG9yaWdpbmF0aW5nCiAgICAgICAgICAgIHNpZGUgb2YgdGhlIHJlbGF0aW9uc2hpcDsgdGhlIEItc2lkZSBpcyBjb25zaWRlcmVkIHRoZSB0ZXJtaW5hdGluZwogICAgICAgICAgICBzaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBvcmRlciBvZiBBLXNpZGUgYW5kIEItc2lkZSBpcyBvZgogICAgICAgICAgICBpbXBvcnRhbmNlIGFuZCBNVVNUIE5PVCBiZSBjaGFuZ2VkIG9uY2UgZGVmaW5lZC4KCiAgICAgICAgICAgIEJvdGggQS1zaWRlIGFuZCBCLXNpZGUgYXJlIGRlZmluZWQgb24gYSB0eXBlLCBhbmQgYXJlIGdpdmVuIGEgcm9sZS4KICAgICAgICAgICAgQSB0eXBlIG1heSBoYXZlIG11bHRpcGxlIG9yaWdpbmF0aW5nIGFuZC9vciB0ZXJtaW5hdGluZyBzaWRlcyBvZiBhCiAgICAgICAgICAgIHJlbGF0aW9uc2hpcCwgYWxsIGRpc3Rpbmd1aXNoZWQgYnkgcm9sZSBuYW1lLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlICdtb2R1bGUnIHN0YXRlbWVudC4KICAgICAgICAgICAgTXVsdGlwbGUgJ2JpLWRpcmVjdGlvbmFsLXRvcG9sb2d5LXJlbGF0aW9uc2hpcCcgc3RhdGVtZW50cyBhcmUKICAgICAgICAgICAgYWxsb3dlZCBwZXIgcGFyZW50IHN0YXRlbWVudC4KCiAgICAgICAgICAgIFN1YnN0YXRlbWVudHMgdG8gdGhlICdiaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIGRlZmluZQogICAgICAgICAgICB0aGUgQS1zaWRlIGFuZCB0aGUgQi1zaWRlLCByZXNwZWN0aXZlbHksIGFuZCBvcHRpb25hbGx5IHByb3BlcnRpZXMKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcC4gRGF0YSBub2RlcyBvZiB0eXBlcyAnbGVhZicgYW5kICdsZWFmLWxpc3QnIGFyZQogICAgICAgICAgICB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIE9uZSBvZiB0aGUgZGF0YSBub2RlcyBNVVNUIGJlIGFubm90YXRlZCB3aXRoCiAgICAgICAgICAgIHRoZSAnYS1zaWRlJyBleHRlbnNpb247IGFub3RoZXIgZGF0YSBub2RlIE1VU1QgYmUgYW5ub3RhdGVkIHdpdGggdGhlCiAgICAgICAgICAgICdiLXNpZGUnIGV4dGVuc2lvbi4gT3RoZXIgZGF0YSBub2RlcyBkZWZpbmUgcHJvcGVydGllcyBvZiB0aGUKICAgICAgICAgICAgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSByZWxhdGlvbnNoaXAgbmFtZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIG5hbWVzcGFjZSBvZiB0aGUgZGVjbGFyaW5nIG1vZHVsZSBhbmQgTVVTVCBiZQogICAgICAgICAgICB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS4iOwoKICAgICAgICBhcmd1bWVudCByZWxhdGlvbnNoaXBOYW1lOwogICAgfQoKICAgIGV4dGVuc2lvbiBhU2lkZSB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkRlZmluZXMgdGhlIEEtc2lkZSBvZiBhIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgJ2xlYWYnIG9yICdsZWFmLWxpc3QnCiAgICAgICAgICAgIHN0YXRlbWVudCwgd2hpY2ggaXRzZWxmIG11c3QgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICd1bmktZGlyZWN0aW9uYWwtdG9wb2xvZ3ktcmVsYXRpb25zaGlwJyBzdGF0ZW1lbnQuCgogICAgICAgICAgICBUaGUgZGF0YSB0eXBlIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIE1VU1QgYmUKICAgICAgICAgICAgJ2luc3RhbmNlLWlkZW50aWZpZXInLiBDb25zdHJhaW50cyBNQVkgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBwYXJlbnQKICAgICAgICAgICAgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIHRvIGVuZm9yY2UgY2FyZGluYWxpdHkuCgogICAgICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBpcyB1c2VkIGFzIG5hbWUKICAgICAgICAgICAgb2YgdGhlIHJvbGUgb2YgdGhlIEEtc2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwLiBUaGUgbmFtZSBvZiB0aGUgcm9sZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIHR5cGUgb24gd2hpY2ggdGhlIEEtc2lkZSBpcyBkZWZpbmVkIGFuZCBNVVNUIGJlCiAgICAgICAgICAgIHVuaXF1ZSB3aXRoaW4gdGhlIHNjb3BlLgoKICAgICAgICAgICAgV2hpbGUgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgZG9lcyBub3QgcmVzdWx0IGluIGEgcHJvcGVydHkKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcCwgaXQgaXMgUkVDT01NRU5ERUQgdG8gYXZvaWQgdXNpbmcgdGhlIG5hbWUgb2YgYW4KICAgICAgICAgICAgZXhpc3RpbmcgdHlwZSBwcm9wZXJ0eSBhcyByb2xlIG5hbWUgdG8gYXZvaWQgcG90ZW50aWFsIGFtYmlndWl0aWVzCiAgICAgICAgICAgIGJldHdlZW4gcHJvcGVydGllcyBvZiBhIHR5cGUsIGFuZCByb2xlcyBvZiBhIHJlbGF0aW9uc2hpcCBvbiB0aGUKICAgICAgICAgICAgdHlwZS4KCiAgICAgICAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQS1zaWRlIHJlc2lkZXMuCiAgICAgICAgICAgIElmIHRoZSB0eXBlIGlzIGRlY2xhcmVkIGluIGFub3RoZXIgbW9kdWxlLCB0aGUgdHlwZSBtdXN0IGJlCiAgICAgICAgICAgIHByZWZpeGVkLCBhbmQgYSBjb3JyZXNwb25kaW5nICdpbXBvcnQnIHN0YXRlbWVudCBiZSB1c2VkIHRvIGRlY2xhcmUKICAgICAgICAgICAgdGhlIHByZWZpeC4iOwoKICAgICAgICBhcmd1bWVudCBhU2lkZVR5cGU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGJTaWRlIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiRGVmaW5lcyB0aGUgQi1zaWRlIG9mIGEgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgYSAnbGVhZicgb3IgJ2xlYWYtbGlzdCcKICAgICAgICAgICAgc3RhdGVtZW50LCB3aGljaCBpdHNlbGYgbXVzdCBiZSBhIHN1YnN0YXRlbWVudCBvZiB0aGUKICAgICAgICAgICAgJ3VuaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIHN0YXRlbWVudC4KCiAgICAgICAgICAgIFRoZSBkYXRhIHR5cGUgb2YgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgTVVTVCBiZQogICAgICAgICAgICAnaW5zdGFuY2UtaWRlbnRpZmllcicuIENvbnN0cmFpbnRzIE1BWSBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIHBhcmVudAogICAgICAgICAgICAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgdG8gZW5mb3JjZSBjYXJkaW5hbGl0eS4KCiAgICAgICAgICAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIGlzIHVzZWQgYXMgbmFtZQogICAgICAgICAgICBvZiB0aGUgcm9sZSBvZiB0aGUgQi1zaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBuYW1lIG9mIHRoZSByb2xlCiAgICAgICAgICAgIGlzIHNjb3BlZCB0byB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQi1zaWRlIGlzIGRlZmluZWQgYW5kIE1VU1QgYmUKICAgICAgICAgICAgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGUuCgogICAgICAgICAgICBXaGlsZSB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBkb2VzIG5vdCByZXN1bHQgaW4gYSBwcm9wZXJ0eQogICAgICAgICAgICBvZiB0aGUgcmVsYXRpb25zaGlwLCBpdCBpcyBSRUNPTU1FTkRFRCB0byBhdm9pZCB1c2luZyB0aGUgbmFtZSBvZiBhbgogICAgICAgICAgICBleGlzdGluZyB0eXBlIHByb3BlcnR5IGFzIHJvbGUgbmFtZSB0byBhdm9pZCBwb3RlbnRpYWwgYW1iaWd1aXRpZXMKICAgICAgICAgICAgYmV0d2VlbiBwcm9wZXJ0aWVzIG9mIGEgdHlwZSwgYW5kIHJvbGVzIG9mIGEgcmVsYXRpb25zaGlwIG9uIHRoZQogICAgICAgICAgICB0eXBlLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9uIHdoaWNoIHRoZSBCLXNpZGUgcmVzaWRlcy4KICAgICAgICAgICAgSWYgdGhlIHR5cGUgaXMgZGVjbGFyZWQgaW4gYW5vdGhlciBtb2R1bGUsIHRoZSB0eXBlIG11c3QgYmUKICAgICAgICAgICAgcHJlZml4ZWQsIGFuZCBhIGNvcnJlc3BvbmRpbmcgJ2ltcG9ydCcgc3RhdGVtZW50IGJlIHVzZWQgdG8gZGVjbGFyZQogICAgICAgICAgICB0aGUgcHJlZml4LiI7CgogICAgICAgIGFyZ3VtZW50IGJTaWRlVHlwZTsKICAgIH0KCiAgICBleHRlbnNpb24gZG9tYWluIHsKICAgICAgICBkZXNjcmlwdGlvbiAiS2V5d29yZCB1c2VkIHRvIGNhcnJ5IGRvbWFpbiBpbmZvcm1hdGlvbi4iOwogICAgICAgIGFyZ3VtZW50IGRvbWFpbk5hbWU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGxhYmVsIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGxhYmVsIGNhbiBiZSB1c2VkIHRvIGdpdmUgbW9kdWxlcyBhbmQgc3VibW9kdWxlcyBhIHNlbWFudGljCiAgICAgICAgICAgIHZlcnNpb24sIGluIGFkZGl0aW9uIHRvIHRoZWlyIHJldmlzaW9uLgoKICAgICAgICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgbGFiZWwgaXMgJ3gueS56JyAtIGV4cHJlc3NlZCBhcyBwYXR0ZXJuLCBpdCBpcwogICAgICAgICAgICBbMC05XStcXC5bMC05XStcXC5bMC05XSsKCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZSByZXZpc2lvbiBzdGF0ZW1lbnQuCiAgICAgICAgICAgIFplcm8gb3Igb25lIHJldmlzaW9uIGxhYmVsIHN0YXRlbWVudHMgcGVyIHBhcmVudCBzdGF0ZW1lbnQgYXJlCiAgICAgICAgICAgIGFsbG93ZWQuCgogICAgICAgICAgICBSZXZpc2lvbiBsYWJlbHMgTVVTVCBiZSB1bmlxdWUgYW1vbmdzdCBhbGwgcmV2aXNpb25zIG9mIGEgbW9kdWxlIG9yCiAgICAgICAgICAgIHN1Ym1vZHVsZS4iOwoKICAgICAgICBhcmd1bWVudCBzZW12ZXJzaW9uOwogICAgfQp9
-o-ran-smo-teiv-common-yang-types       urn:o-ran:smo-teiv-common-yang-types    \N      []      2025-01-17      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgaWV0Zi15YW5nLXR5cGVzIHsgcHJlZml4IHlhbmc7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiVG9wb2xvZ3kgYW5kIEludmVudG9yeSBjb21tb24gdHlwZXMgbW9kZWwKCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHJlLXVzYWJsZSBkYXRhIHR5cGVzIHRoYXQgdG9wb2xvZ3kgYW5kIGludmVudG9yeSBtb2RlbHMKICAgIHdpbGwgZnJlcXVlbnRseSB1c2UgYXMgcGFydCBvZiB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNS0wMS0xNyIgewogICAgICAgIGRlc2NyaXB0aW9uICJBZGRlZCBmaXJzdERpc2NvdmVyZWQgYW5kIGxhc3RNb2RpZmllZCB0byBtZXRhZGF0YSBjb250YWluZXIiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjUuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0xMC0wNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJBZGRlZCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIGFuZCBPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwCiAgICAgICAgZm9yIHNvdXJjZUlkcyBhbmQgcmVsaWFiaWxpdHlJbmRpY2F0b3IgdG8gbWV0YWRhdGEuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBncm91cGluZyBUb3BfR3JwX1R5cGUgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyBjb250YWluaW5nIHRoZSBrZXkgYXR0cmlidXRlIGNvbW1vbiB0byBhbGwgdHlwZXMuCiAgICAgICAgICAgIEFsbCB0eXBlcyBNVVNUIHVzZSB0aGlzIGdyb3VwaW5nLiI7CgogICAgICAgIGxlYWYgaWQgewogICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRvcG9sb2d5IGVudGl0aWVzLiBSZXByZXNlbnRzIHRoZQogICAgICAgICAgICAgICAgRW50aXR5IEluc3RhbmNlIElkZW50aWZpZXIuIjsKICAgICAgICB9CiAgICB9CgogICAgY29udGFpbmVyIGRlY29yYXRvcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IGZvciBhcHBsaWNhdGlvbnMgd2lzaGluZwogICAgICAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGRlY29yYXRvcnMuIFRoaXMgaXMgZG9uZSB2aWEgYXVnbWVudGF0aW9ucy4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgbGVhZi1saXN0IGNsYXNzaWZpZXJzIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiQ29uc3VtZXIgZGVmaW5lZCB0YWdzIHRvIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnNoaXBzLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKCiAgICAgICAgdHlwZSBpZGVudGl0eXJlZiB7IGJhc2UgY2xhc3NpZmllcjsgfQogICAgfQoKICAgIGdyb3VwaW5nIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyB0byBpZGVudGlmeSBzb3VyY2VJZHMgb24gYSB0b3BvbG9neSBlbnRpdHkuIjsKCiAgICAgICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CgogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMuCgogICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBUb3BvbG9neSBFbnRpdHkgaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlCiAgICAgICAgICAgICAgICBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkncyBhdHRyaWJ1dGVzLiBUaGlzIGlzIGV4cG9zZWQgdG8gdGhlCiAgICAgICAgICAgICAgICBjb25zdW1lcnMgYW5kIGNhbiBvbmx5IGJlIHNldCBieSB0aGUgcmVzcG9uc2libGUgYWRhcHRlci4gVGhpcwogICAgICAgICAgICAgICAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwgYW5kIGl0IE1VU1QgTk9UIGJlIGF1Z21lbnRlZCBvciBkZXZpYXRlZAogICAgICAgICAgICAgICAgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UuIjsKCiAgICAgICAgICAgIHR5cGUgc291cmNlSWQ7CiAgICAgICAgICAgIG9yZGVyZWQtYnkgdXNlcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQoKICAgIGdyb3VwaW5nIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyB0byBpZGVudGlmeSBzb3VyY2VJZHMgb24gYSB0b3BvbG9neSByZWxhdGlvbnNoaXAuIjsKCiAgICAgICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CgogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMgaW4gdGhlIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZQogICAgICAgICAgICAgICAgZGVjbGFyZWQgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBpcyBleHBvc2VkIHRvIHRoZQogICAgICAgICAgICAgICAgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkgdGhlIHJlc3BvbnNpYmxlIGFkYXB0ZXIuIFRoaXMKICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4KICAgICAgICAgICAgICAgIGFueSB3YXksIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLiI7CgogICAgICAgICAgICB0eXBlIHNvdXJjZUlkOwogICAgICAgICAgICBvcmRlcmVkLWJ5IHVzZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAyOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgYW4gZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpcnMuCgogICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IEVudGl0eSBvciBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwKICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5IG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzCiAgICAgICAgICAgIGF0dHJpYnV0ZXMuIFRoaXMgaXMgZXhwb3NlZCB0byB0aGUgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkKICAgICAgICAgICAgVG9wb2xvZ3kgYW5kIEludmVudG9yeSBFeHBvc3VyZSBIYW5kbGluZyBhbmQgRGlzY292ZXJ5IGFuZCBSZWNvbmNpbGlhdGlvbiBBZGFwdGVyLgogICAgICAgICAgICBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwKICAgICAgICAgICAgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UuIjsKCiAgICAgICAgbGVhZiByZWxpYWJpbGl0eUluZGljYXRvciB7CiAgICAgICAgICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICAgICAgICAgICAgZW51bSBPSyB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIGlzIGluIGFsaWdubWVudCB3aXRoIHRoZSBzb3VyY2Ugb2YgdHJ1dGgsCiAgICAgICAgICAgICAgICAgICAgYXMgZmFyIGFzIFRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgRXhwb3N1cmUgSGFuZGxpbmcgaXMgYXdhcmUuIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW51bSBSRVNUT1JFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIHdhcyByZXN0b3JlZCBmcm9tIGJhY2t1cCBhbmQgdGhlIHJlc3BvbnNpYmxlCiAgICAgICAgICAgICAgICAgICAgYWRhcHRlcnMgYXJlIGNoZWNraW5nIHRvIGVuc3VyZSB0aGUgZGF0YSBpcyBjdXJyZW50LiI7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVudW0gQURWSVNFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVudGl0eSBpbXBsaWNpdGx5IGNyZWF0ZWQgYnkgVG9wb2xvZ3kgYW5kIEludmVudG9yeSBFeHBvc3VyZQogICAgICAgICAgICAgICAgICAgIEhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSBub3QgYWxpZ25lZCB3aXRoIHRoZSBzb3VyY2Ugb2YgdHJ1dGguIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGxlYWYgZmlyc3REaXNjb3ZlcmVkIHsKICAgICAgICAgICAgdHlwZSB5YW5nOmRhdGUtYW5kLXRpbWU7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaW1lc3RhbXAgaW5kaWNhdGluZyB3aGVuIGFuIGluc3RhbmNlIG9mIFRvcG9sb2d5IEVudGl0eSBvciBSZWxhdGlvbgogICAgICAgICAgICB3YXMgZmlyc3QgcmVwcmVzZW50ZWQgaW4gVG9wb2xvZ3kgYW5kIEludmVudG9yeSBFeHBvc3VyZSBIYW5kbGluZyB2aWEgZGlzY292ZXJ5LiI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGxhc3RNb2RpZmllZCB7CiAgICAgICAgICAgIHR5cGUgeWFuZzpkYXRlLWFuZC10aW1lOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGltZXN0YW1wIGluZGljYXRpbmcgd2hlbiBhbiBpbnN0YW5jZSBvZiBUb3BvbG9neSBFbnRpdHkgb3IgUmVsYXRpb24KICAgICAgICAgICAgd2FzIGxhc3QgdXBkYXRlZCAoZXhjbHVkaW5nIGNsYXNzaWZpZXJzIGFuZCBkZWNvcmF0b3JzKS4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZGVudGl0eSBjbGFzc2lmaWVyIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNsYXNzaWZpZXIgaXMgdXNlZCBhcyBhIGJhc2UgdG8gcHJvdmlkZSBhbGwgY2xhc3NpZmllcnMKICAgICAgICB3aXRoIGlkZW50aXR5LiAiOwogICAgfQoKICAgIHR5cGVkZWYgc291cmNlSWQgewogICAgICAgIGRlc2NyaXB0aW9uICJBbiBpZGVudGl0eSB0aGF0IHJlcHJlc2VudHMgYSBuYXRpdmUgaWRlbnRpZmllciBvZiBhIHRvcG9sb2d5IGVudGl0eS4iOwogICAgICAgIHR5cGUgc3RyaW5nOwogICAgfQp9
+o-ran-smo-teiv-common-yang-extensions  urn:o-ran:smo-teiv-common-yang-extensions       \N      []      2025-02-14      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewoKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMiOwogIHByZWZpeCBvci10ZWl2LXlleHQ7CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgWUFORyBleHRlbnNpb25zIG1vZGVsLgogIFRoaXMgbW9kZWwgY29udGFpbnMgZXh0ZW5zaW9ucyB0byB0aGUgWUFORyBsYW5ndWFnZSB0aGF0IHRvcG9sb2d5IGFuZAogIGludmVudG9yeSBtb2RlbHMgd2lsbCB1c2UgdG8gZGVmaW5lIGFuZCBhbm5vdGF0ZSB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcwoKICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNC0yMDI1IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjUtMDItMTQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVXBkYXRlcyBmb3IgYmktZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAyLjAwIjsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0xMC0xMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAxLjAwIjsKICAgIH0KCiAgICBleHRlbnNpb24gYmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIHsKICAgICAgICBhcmd1bWVudCByZWxhdGlvbnNoaXBOYW1lOwogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJEZWZpbmVzIGEgYmktZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwIGluIHRoZSB0b3BvbG9neS4KICAgICAgICAgICAgQSBiaS1kaXJlY3Rpb25hbC1hc3NvY2lhdGlvbiAoQkRBKSBpcyBhIHJlbGF0aW9uc2hpcCBjb21wcmlzaW5nIG9mCiAgICAgICAgICAgIGFuIGFTaWRlIGFuZCBhIGJTaWRlLiBUaGUgYVNpZGUgaXMgY29uc2lkZXJlZCB0aGUgb3JpZ2luYXRpbmcKICAgICAgICAgICAgc2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwOyB0aGUgYlNpZGUgaXMgY29uc2lkZXJlZCB0aGUgdGVybWluYXRpbmcKICAgICAgICAgICAgc2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwLiBUaGUgb3JkZXIgb2YgYVNpZGUgYW5kIGJTaWRlIGlzIG9mCiAgICAgICAgICAgIGltcG9ydGFuY2UgYW5kIE1VU1QgTk9UIGJlIGNoYW5nZWQgb25jZSBkZWZpbmVkLgoKICAgICAgICAgICAgQm90aCBhU2lkZSBhbmQgYlNpZGUgYXJlIGRlZmluZWQgb24gYSB0eXBlLCBhbmQgYXJlIGdpdmVuIGEgcm9sZS4KICAgICAgICAgICAgQSB0eXBlIG1heSBoYXZlIG11bHRpcGxlIG9yaWdpbmF0aW5nIGFuZC9vciB0ZXJtaW5hdGluZyBzaWRlcyBvZiBhCiAgICAgICAgICAgIHJlbGF0aW9uc2hpcCwgYWxsIGRpc3Rpbmd1aXNoZWQgYnkgcm9sZSBuYW1lLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlICdtb2R1bGUnIHN0YXRlbWVudC4KICAgICAgICAgICAgTXVsdGlwbGUgJ2JpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCcgc3RhdGVtZW50cyBhcmUKICAgICAgICAgICAgYWxsb3dlZCBwZXIgcGFyZW50IHN0YXRlbWVudC4KCiAgICAgICAgICAgIFN1YnN0YXRlbWVudHMgdG8gdGhlICdiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAnIGRlZmluZQogICAgICAgICAgICB0aGUgYVNpZGUgYW5kIHRoZSBiU2lkZSwgcmVzcGVjdGl2ZWx5LCBhbmQgb3B0aW9uYWxseSBwcm9wZXJ0aWVzCiAgICAgICAgICAgIG9mIHRoZSByZWxhdGlvbnNoaXAuIERhdGEgbm9kZXMgb2YgdHlwZXMgJ2xlYWYnIGFuZCAnbGVhZi1saXN0JyBhcmUKICAgICAgICAgICAgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLiBPbmUgb2YgdGhlIGRhdGEgbm9kZXMgTVVTVCBiZSBhbm5vdGF0ZWQgd2l0aAogICAgICAgICAgICB0aGUgJ2FTaWRlJyBleHRlbnNpb247IGFub3RoZXIgZGF0YSBub2RlIE1VU1QgYmUgYW5ub3RhdGVkIHdpdGggdGhlCiAgICAgICAgICAgICdiU2lkZScgZXh0ZW5zaW9uLiBPdGhlciBkYXRhIG5vZGVzIGRlZmluZSBwcm9wZXJ0aWVzIG9mIHRoZQogICAgICAgICAgICByZWxhdGlvbnNoaXAuCgogICAgICAgICAgICBUaGUgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhlIHJlbGF0aW9uc2hpcC4gVGhlIHJlbGF0aW9uc2hpcCBuYW1lCiAgICAgICAgICAgIGlzIHNjb3BlZCB0byB0aGUgbmFtZXNwYWNlIG9mIHRoZSBkZWNsYXJpbmcgbW9kdWxlIGFuZCBNVVNUIGJlCiAgICAgICAgICAgIHVuaXF1ZSB3aXRoaW4gdGhlIHNjb3BlLiI7CiAgICB9CgogICAgZXh0ZW5zaW9uIGFTaWRlIHsKICAgICAgICBhcmd1bWVudCBhU2lkZVR5cGU7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkRlZmluZXMgdGhlIGFTaWRlIG9mIGEgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgYSAnbGVhZicgb3IgJ2xlYWYtbGlzdCcKICAgICAgICAgICAgc3RhdGVtZW50LCB3aGljaCBpdHNlbGYgbXVzdCBiZSBhIHN1YnN0YXRlbWVudCBvZiB0aGUKICAgICAgICAgICAgJ2JpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCcgc3RhdGVtZW50LgoKICAgICAgICAgICAgVGhlIGRhdGEgdHlwZSBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBNVVNUIGJlCiAgICAgICAgICAgICdpbnN0YW5jZS1pZGVudGlmaWVyJy4gQ29uc3RyYWludHMgTUFZIGJlIHVzZWQgYXMgcGFydCBvZiB0aGUgcGFyZW50CiAgICAgICAgICAgICdsZWFmJyBvciAnbGVhZi1saXN0JyB0byBlbmZvcmNlIGNhcmRpbmFsaXR5LgoKICAgICAgICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgaXMgdXNlZCBhcyBuYW1lCiAgICAgICAgICAgIG9mIHRoZSByb2xlIG9mIHRoZSBhU2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwLiBUaGUgbmFtZSBvZiB0aGUgcm9sZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIHR5cGUgb24gd2hpY2ggdGhlIGFTaWRlIGlzIGRlZmluZWQgYW5kIE1VU1QgYmUKICAgICAgICAgICAgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGUuCgogICAgICAgICAgICBXaGlsZSB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBkb2VzIG5vdCByZXN1bHQgaW4gYSBwcm9wZXJ0eQogICAgICAgICAgICBvZiB0aGUgcmVsYXRpb25zaGlwLCBpdCBpcyBSRUNPTU1FTkRFRCB0byBhdm9pZCB1c2luZyB0aGUgbmFtZSBvZiBhbgogICAgICAgICAgICBleGlzdGluZyB0eXBlIHByb3BlcnR5IGFzIHJvbGUgbmFtZSB0byBhdm9pZCBwb3RlbnRpYWwgYW1iaWd1aXRpZXMKICAgICAgICAgICAgYmV0d2VlbiBwcm9wZXJ0aWVzIG9mIGEgdHlwZSwgYW5kIHJvbGVzIG9mIGEgcmVsYXRpb25zaGlwIG9uIHRoZSB0eXBlLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9uIHdoaWNoIHRoZSBhU2lkZSByZXNpZGVzLgogICAgICAgICAgICBJZiB0aGUgdHlwZSBpcyBkZWNsYXJlZCBpbiBhbm90aGVyIG1vZHVsZSwgdGhlIHR5cGUgbXVzdCBiZQogICAgICAgICAgICBwcmVmaXhlZCwgYW5kIGEgY29ycmVzcG9uZGluZyAnaW1wb3J0JyBzdGF0ZW1lbnQgYmUgdXNlZCB0byBkZWNsYXJlCiAgICAgICAgICAgIHRoZSBwcmVmaXguIjsKICAgIH0KCiAgICBleHRlbnNpb24gYlNpZGUgewogICAgICAgIGFyZ3VtZW50IGJTaWRlVHlwZTsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiRGVmaW5lcyB0aGUgYlNpZGUgb2YgYSByZWxhdGlvbnNoaXAuCgogICAgICAgICAgICBUaGUgc3RhdGVtZW50IE1VU1Qgb25seSBiZSBhIHN1YnN0YXRlbWVudCBvZiBhICdsZWFmJyBvciAnbGVhZi1saXN0JwogICAgICAgICAgICBzdGF0ZW1lbnQsIHdoaWNoIGl0c2VsZiBtdXN0IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZQogICAgICAgICAgICAnYmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwJyBzdGF0ZW1lbnQuCgogICAgICAgICAgICBUaGUgZGF0YSB0eXBlIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIE1VU1QgYmUKICAgICAgICAgICAgJ2luc3RhbmNlLWlkZW50aWZpZXInLiBDb25zdHJhaW50cyBNQVkgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBwYXJlbnQKICAgICAgICAgICAgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIHRvIGVuZm9yY2UgY2FyZGluYWxpdHkuCgogICAgICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBpcyB1c2VkIGFzIG5hbWUKICAgICAgICAgICAgb2YgdGhlIHJvbGUgb2YgdGhlIGJTaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBuYW1lIG9mIHRoZSByb2xlCiAgICAgICAgICAgIGlzIHNjb3BlZCB0byB0aGUgdHlwZSBvbiB3aGljaCB0aGUgYlNpZGUgaXMgZGVmaW5lZCBhbmQgTVVTVCBiZQogICAgICAgICAgICB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS4KCiAgICAgICAgICAgIFdoaWxlIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIGRvZXMgbm90IHJlc3VsdCBpbiBhIHByb3BlcnR5CiAgICAgICAgICAgIG9mIHRoZSByZWxhdGlvbnNoaXAsIGl0IGlzIFJFQ09NTUVOREVEIHRvIGF2b2lkIHVzaW5nIHRoZSBuYW1lIG9mIGFuCiAgICAgICAgICAgIGV4aXN0aW5nIHR5cGUgcHJvcGVydHkgYXMgcm9sZSBuYW1lIHRvIGF2b2lkIHBvdGVudGlhbCBhbWJpZ3VpdGllcwogICAgICAgICAgICBiZXR3ZWVuIHByb3BlcnRpZXMgb2YgYSB0eXBlLCBhbmQgcm9sZXMgb2YgYSByZWxhdGlvbnNoaXAgb24gdGhlIHR5cGUuCgogICAgICAgICAgICBUaGUgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhlIHR5cGUgb24gd2hpY2ggdGhlIGJTaWRlIHJlc2lkZXMuCiAgICAgICAgICAgIElmIHRoZSB0eXBlIGlzIGRlY2xhcmVkIGluIGFub3RoZXIgbW9kdWxlLCB0aGUgdHlwZSBtdXN0IGJlCiAgICAgICAgICAgIHByZWZpeGVkLCBhbmQgYSBjb3JyZXNwb25kaW5nICdpbXBvcnQnIHN0YXRlbWVudCBiZSB1c2VkIHRvIGRlY2xhcmUKICAgICAgICAgICAgdGhlIHByZWZpeC4iOwogICAgfQoKICAgIGV4dGVuc2lvbiBkb21haW4gewogICAgICAgIGFyZ3VtZW50IGRvbWFpbk5hbWU7CiAgICAgICAgZGVzY3JpcHRpb24gIktleXdvcmQgdXNlZCB0byBjYXJyeSBkb21haW4gaW5mb3JtYXRpb24uIjsKICAgIH0KCiAgICBleHRlbnNpb24gbGFiZWwgewogICAgICAgIGFyZ3VtZW50IHNlbXZlcnNpb247CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBsYWJlbCBjYW4gYmUgdXNlZCB0byBnaXZlIG1vZHVsZXMgYW5kIHN1Ym1vZHVsZXMgYSBzZW1hbnRpYwogICAgICAgICAgICB2ZXJzaW9uLCBpbiBhZGRpdGlvbiB0byB0aGVpciByZXZpc2lvbi4KCiAgICAgICAgICAgIFRoZSBmb3JtYXQgb2YgdGhlIGxhYmVsIGlzICd4LnkueicgLSBleHByZXNzZWQgYXMgcGF0dGVybiwgaXQgaXMKICAgICAgICAgICAgWzAtOV0rXFwuWzAtOV0rXFwuWzAtOV0rCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZSByZXZpc2lvbiBzdGF0ZW1lbnQuCiAgICAgICAgICAgIFplcm8gb3Igb25lIHJldmlzaW9uIGxhYmVsIHN0YXRlbWVudHMgcGVyIHBhcmVudCBzdGF0ZW1lbnQgYXJlCiAgICAgICAgICAgIGFsbG93ZWQuCgogICAgICAgICAgICBSZXZpc2lvbiBsYWJlbHMgTVVTVCBiZSB1bmlxdWUgYW1vbmdzdCBhbGwgcmV2aXNpb25zIG9mIGEgbW9kdWxlIG9yCiAgICAgICAgICAgIHN1Ym1vZHVsZS4iOwogICAgfQp9
+o-ran-smo-teiv-common-yang-types       urn:o-ran:smo-teiv-common-yang-types    \N      []      2025-03-20      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgaWV0Zi15YW5nLXR5cGVzIHsgcHJlZml4IHlhbmc7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiVG9wb2xvZ3kgYW5kIEludmVudG9yeSBjb21tb24gdHlwZXMgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyByZS11c2FibGUgZGF0YSB0eXBlcyB0aGF0IHRvcG9sb2d5IGFuZCBpbnZlbnRvcnkgbW9kZWxzCiAgICB3aWxsIGZyZXF1ZW50bHkgdXNlIGFzIHBhcnQgb2YgdHlwZXMgYW5kIHJlbGF0aW9uc2hpcHMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNC0yMDI1IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNS0wMy0yMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJQcm9wb3NlZCBtZXRhZGF0YSwgZGVjb3JhdG9ycyBhbmQgY2xhc3NpZmllcnMiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjEuMTsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNS0wMi0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJSZW5hbWVkIEFkYXB0ZXIgRW50aXR5IHRvIE9yaWdpbiBFbnRpdHkuIEFkZGVkIEdlby1JbmZvcm1hdGlvbiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAyLjAwIjsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0xMC0xMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAxLjAwLjAwIjsKICAgIH0KCiAgICBncm91cGluZyBUb3BfR3JwX1R5cGUgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyBjb250YWluaW5nIHRoZSBrZXkgYXR0cmlidXRlIGNvbW1vbiB0byBhbGwgdHlwZXMuIEFsbCB0eXBlcyBNVVNUIHVzZSB0aGlzIGdyb3VwaW5nLiI7CgogICAgICAgIGxlYWYgaWQgewogICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRvcG9sb2d5IGVudGl0aWVzLiBSZXByZXNlbnRzIHRoZSBFbnRpdHkgSW5zdGFuY2UgSWRlbnRpZmllci4iOwogICAgICAgIH0KICAgIH0KCiAgICBncm91cGluZyBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIHsKICAgICAgICBkZXNjcmlwdGlvbiAiR3JvdXBpbmcgdG8gaWRlbnRpZnkgc291cmNlSWRzIG9uIGEgdG9wb2xvZ3kgZW50aXR5LiI7CgogICAgICAgIGxlYWYtbGlzdCBzb3VyY2VJZHMgewogICAgICAgICAgICB0eXBlIHNvdXJjZUlkOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICAgICAgb3JkZXJlZC1ieSB1c2VyOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMuCgogICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIGF0dGFjaGVkIHRvIFRvcG9sb2d5IEVudGl0eSBpbnN0YW5jZSwgb3V0c2lkZSBvZiB0aGUKICAgICAgICAgICAgICAgIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eSdzIGF0dHJpYnV0ZXMuIFRoaXMgaXMgZXhwb3NlZCB0byB0aGUKICAgICAgICAgICAgICAgIGNvbnN1bWVycyBhbmQgY2FuIG9ubHkgYmUgc2V0IGJ5IHRoZSByZXNwb25zaWJsZSBhZGFwdGVyLiBUaGlzCiAgICAgICAgICAgICAgICBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLCBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkCiAgICAgICAgICAgICAgICBpbiBhbnkgd2F5LCB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZS4iOwogICAgICAgIH0KICAgIH0KCiAgICBncm91cGluZyBPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwIHsKICAgICAgICBkZXNjcmlwdGlvbiAiR3JvdXBpbmcgdG8gaWRlbnRpZnkgc291cmNlSWRzIG9uIGEgdG9wb2xvZ3kgcmVsYXRpb25zaGlwLiI7CgogICAgICAgIGxlYWYtbGlzdCBzb3VyY2VJZHMgewogICAgICAgICAgICB0eXBlIHNvdXJjZUlkOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMjsKICAgICAgICAgICAgb3JkZXJlZC1ieSB1c2VyOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMgaW4gdGhlIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZQogICAgICAgICAgICAgICAgZGVjbGFyZWQgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBpcyBleHBvc2VkIHRvIHRoZQogICAgICAgICAgICAgICAgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkgdGhlIHJlc3BvbnNpYmxlIGFkYXB0ZXIuIFRoaXMKICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4KICAgICAgICAgICAgICAgIGFueSB3YXksIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLiI7CiAgICAgICAgfQogICAgfQoKICAgIHR5cGVkZWYgc291cmNlSWQgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJBbiBpZGVudGl0eSB0aGF0IHJlcHJlc2VudHMgYSBuYXRpdmUgaWRlbnRpZmllciBvZiBhIHRvcG9sb2d5IGVudGl0eS4iOwogICAgfQoKICAgIGdyb3VwaW5nIEdlb0luZm9ybWF0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBwaHlzaWNhbCBsb2NhdGlvbiB3aXRoIGFkZHJlc3MgYW5kIGNvb3JkaW5hdGVzLiI7CgogICAgICAgIGxlYWYgYWRkcmVzcyB7CiAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQWRkcmVzcyBvZiB0aGUgcGh5c2ljYWwgbG9jYXRpb24uIjsKICAgICAgICB9CgogICAgICAgIGNvbnRhaW5lciBjb29yZGluYXRlIHsKICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6R2VvQ29vcmRpbmF0ZUdycDsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkdlb2dyYXBoaWNhbCBjb29yZGluYXRlIGNvbnRhaW5pbmcgTGF0aXR1ZGUsIExvbmdpdHVkZSBhbmQgQWx0aXR1ZGUuIFJlZmVyZW5jZTogM0dQUCBUUyAyOC42MjIiOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgYW4gZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpcnMuCgogICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IEVudGl0eSBvciBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwKICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5IG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzCiAgICAgICAgICAgIGF0dHJpYnV0ZXMuIFRoaXMgaXMgZXhwb3NlZCB0byB0aGUgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkKICAgICAgICAgICAgVG9wb2xvZ3kgYW5kIEludmVudG9yeSBFeHBvc3VyZSBIYW5kbGluZyBhbmQgRGlzY292ZXJ5IGFuZCBSZWNvbmNpbGlhdGlvbiBBZGFwdGVyLgogICAgICAgICAgICBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwKICAgICAgICAgICAgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UuIjsKCiAgICAgICAgbGVhZiByZWxpYWJpbGl0eUluZGljYXRvciB7CiAgICAgICAgICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICAgICAgICAgICAgZW51bSBPSyB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIGlzIGluIGFsaWdubWVudCB3aXRoIHRoZSBzb3VyY2Ugb2YgdHJ1dGgsCiAgICAgICAgICAgICAgICAgICAgYXMgZmFyIGFzIFRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgRXhwb3N1cmUgSGFuZGxpbmcgaXMgYXdhcmUuIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW51bSBSRVNUT1JFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIHdhcyByZXN0b3JlZCBmcm9tIGJhY2t1cCBhbmQgdGhlIHJlc3BvbnNpYmxlCiAgICAgICAgICAgICAgICAgICAgYWRhcHRlcnMgYXJlIGNoZWNraW5nIHRvIGVuc3VyZSB0aGUgZGF0YSBpcyBjdXJyZW50LiI7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVudW0gQURWSVNFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVudGl0eSBpbXBsaWNpdGx5IGNyZWF0ZWQgYnkgVG9wb2xvZ3kgYW5kIEludmVudG9yeSBFeHBvc3VyZQogICAgICAgICAgICAgICAgICAgIEhhbmRsaW5nIGFuZCBwb3RlbnRpYWxseSBub3QgYWxpZ25lZCB3aXRoIHRoZSBzb3VyY2Ugb2YgdHJ1dGguIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBsZWFmIGZpcnN0RGlzY292ZXJlZCB7CiAgICAgICAgICAgIHR5cGUgeWFuZzpkYXRlLWFuZC10aW1lOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGltZXN0YW1wIGluZGljYXRpbmcgd2hlbiBhbiBpbnN0YW5jZSBvZiBUb3BvbG9neSBFbnRpdHkgb3IgUmVsYXRpb24KICAgICAgICAgICAgd2FzIGZpcnN0IHJlcHJlc2VudGVkIGluIFRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgRXhwb3N1cmUgSGFuZGxpbmcgdmlhIGRpc2NvdmVyeS4iOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBsYXN0TW9kaWZpZWQgewogICAgICAgICAgICB0eXBlIHlhbmc6ZGF0ZS1hbmQtdGltZTsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRpbWVzdGFtcCBpbmRpY2F0aW5nIHdoZW4gYW4gaW5zdGFuY2Ugb2YgVG9wb2xvZ3kgRW50aXR5IG9yIFJlbGF0aW9uCiAgICAgICAgICAgIHdhcyBsYXN0IHVwZGF0ZWQgKGV4Y2x1ZGluZyBjbGFzc2lmaWVycyBhbmQgZGVjb3JhdG9ycykuIjsKICAgICAgICB9CiAgICB9CgogICAgY29udGFpbmVyIGRlY29yYXRvcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IGZvciBhcHBsaWNhdGlvbnMgd2lzaGluZwogICAgICAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGRlY29yYXRvcnMuIFRoaXMgaXMgZG9uZSB2aWEgYXVnbWVudGF0aW9ucy4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgbGVhZi1saXN0IGNsYXNzaWZpZXJzIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiQ29uc3VtZXIgZGVmaW5lZCB0YWdzIHRvIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnNoaXBzLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKCiAgICAgICAgdHlwZSBpZGVudGl0eXJlZiB7IGJhc2UgY2xhc3NpZmllcjsgfQogICAgfQoKICAgIGlkZW50aXR5IGNsYXNzaWZpZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY2xhc3NpZmllciBpcyB1c2VkIGFzIGEgYmFzZSB0byBwcm92aWRlIGFsbCBjbGFzc2lmaWVycwogICAgICAgIHdpdGggaWRlbnRpdHkuICI7CiAgICB9Cn0=
 o-ran-smo-teiv-equipment       urn:o-ran:smo-teiv-equipment    EQUIPMENT       []      2024-10-21      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMjEiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiRGVwcmVjYXRlIEFudGVubmFNb2R1bGUgYXR0cmlidXRlIGFudGVubmFCZWFtV2lkdGguCiAgICAgICAgVG8gYmUgcmVwbGFjZWQgYnkgaG9yaXpvbnRhbEJlYW1XaWR0aCBhbmQgdmVydGljYWxCZWFtV2lkdGguIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDgiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXppbXV0aCBhdHRyaWJ1dGUgZm9yIEFudGVubmFNb2R1bGUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3RzLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBFUVVJUE1FTlQ7CgogICAgbGlzdCBBbnRlbm5hTW9kdWxlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQW4gQW50ZW5uYSBNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYXNwZWN0IG9mIGFuCiAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubwogICAgICAgICAgICAgICAgb3BlcmF0aW9uYWwgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBtZWNoYW5pY2FsQW50ZW5uYUJlYXJpbmcgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgYmVhcmluZyBvbiBhbnRlbm5hIHN1YnVuaXQgd2hlcmUgYW50ZW5uYQogICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgIGFzIHRoZSBpbmNsaW5hdGlvbiBvZiB0aGUgYW50ZW5uYSBlbGVtZW50IHJlc3BlY3QgdG8gdGhlCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBwbGFuZS4gSXQgaXMgYSBzaWduZWQgdmFsdWUuIFBvc2l0aXZlIGluZGljYXRlcwogICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubyBvcGVyYXRpb25hbAogICAgICAgICAgICAgICAgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiB0b3RhbFRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRvdGFsIGFudGVubmEgZWxldmF0aW9uIGluY2x1ZGluZyB0aGUgaW5zdGFsbGVkCiAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgVGlsdCAoUkVUKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlbGVjdHJpY2FsQW50ZW5uYVRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVsZWN0cmljYWxseS1jb250cm9sbGVkIHRpbHQgb2YgbWFpbiBiZWFtIG1heGltdW0KICAgICAgICAgICAgICAgIHdpdGggcmVzcGVjdCB0byBkaXJlY3Rpb24gb3J0aG9nb25hbCB0byBhbnRlbm5hIGVsZW1lbnQKICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICBwb3NpdGl2ZSwgdGlsdCB1cCBpcyBuZWdhdGl2ZS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGFudGVubmFCZWFtV2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIE1lYXN1cmVkIGluCiAgICAgICAgICAgICAgICBkZWdyZWVzLgoKICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6IFNpbmNlIDI0LlE0LiBSZXBsYWNlZCBieSBBbnRlbm5hTW9kdWxlOjpob3Jpem9udGFsQmVhbVdpZHRoCiAgICAgICAgICAgICAgICBhbmQgQW50ZW5uYU1vZHVsZTo6dmVydGljYWxCZWFtV2lkdGguIFBsYW5uZWQgdG8gYmUgcmVtb3ZlZC4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgaG9yaXpvbnRhbEJlYW1XaWR0aCAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHZlcnRpY2FsQmVhbVdpZHRoICAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIHZlcnRpY2FsIHBsYW5lLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhemltdXRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgdmFsdWUgb2YgdGhlIGF6aW11dGggb2YgdGhlIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgaW5zdGFsbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9JTlNUQUxMRURfQVRfU0lURSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2l0ZSB0eXBlLgogICAgICAgICAgICBUaGUgU2l0ZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSB0aGUgQW50ZW5uYU1vZHVsZSBpcyBpbnN0YWxsZWQuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGF0IG9uZSBTaXRlLgogICAgICAgICAgICBBIFNpdGUgaW5zdGFuY2UgY2FuIGhhdmUgbWFueSBpbnN0YWxsZWQgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
 o-ran-smo-teiv-oam     urn:o-ran:smo-teiv-oam  OAM     []      2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gT0FNOwoKICAgIGxpc3QgTWFuYWdlZEVsZW1lbnQgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE1hbmFnZWQgRWxlbWVudCAoTUUpIGlzIGEgbm9kZSBpbnRvIGEgdGVsZWNvbW11bmljYXRpb24KICAgICAgICBuZXR3b3JrIHByb3ZpZGluZyBzdXBwb3J0IGFuZC9vciBzZXJ2aWNlIHRvIHN1YnNjcmliZXJzLiBBbiBNRQogICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICBvdmVyIG9uZSBvciBtb3JlIGludGVyZmFjZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGJlaW5nIG1vbml0b3JlZAogICAgICAgIGFuZC9vciBjb250cm9sbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgfQp9
-o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2024-10-08      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbgogICAgICAgICJSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gTG9naWNhbCBkb21haW4sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uYWwgY2FwYWJpbGl0eQogICAgICAgIG9mIHRoZSBkZXBsb3llZCBSQU4gdGhhdCBhcmUgcmVsZXZhbnQgdG8gckFwcHMgdXNlIGNhc2VzLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkFkZGVkIHJhbmdlIGZvciBhemltdXRoIGF0dHJpYnV0ZSBvZiBTZWN0b3IuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3QuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSQU47CgogICAgbGlzdCBPUlVGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpLgoKICAgICAgICBBIGxvZ2ljYWwgbm9kZSBob3N0aW5nIExvdy1QSFkgbGF5ZXIgYW5kIFJGIHByb2Nlc3NpbmcgYmFzZWQgb24gYQogICAgICAgIGxvd2VyIGxheWVyIGZ1bmN0aW9uYWwgc3BsaXQuICBUaGlzIGlzIHNpbWlsYXIgdG8gM0dQUOKAmXMg4oCcVFJQ4oCdIG9yCiAgICAgICAg4oCcUlJI4oCdIGJ1dCBtb3JlIHNwZWNpZmljIGluIGluY2x1ZGluZyB0aGUgTG93LVBIWSBsYXllciAoRkZUL2lGRlQsCiAgICAgICAgUFJBQ0ggZXh0cmFjdGlvbikuIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZQogICAgICAgIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlCiAgICAgICAgcmFkaW8gaW50ZXJmYWNlIHRvd2FyZHMgdGhlIFVFLiBUaGlzIGlzIGRlcGxveWVkIGFzIGEgUE5GLiBUaGUgTy1SVQogICAgICAgIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIE0tUGxhbmUgaW50ZXJmYWNlIHRvd2FyZHMgdGhlIE8tRFUKICAgICAgICBhbmQgU01PLgoKICAgICAgICBOb3RlOiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBPLVJVIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG9ydUlkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIE8tUlUgd2l0aGluIGEgT1JVRnVuY3Rpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKS4KCiAgICAgICAgQW4gTy1SQU4gTmV0d29yayBGdW5jdGlvbiAoTkYpIHRoYXQgZW5hYmxlcyBuZWFyLXJlYWwtdGltZSBjb250cm9sCiAgICAgICAgYW5kIG9wdGltaXphdGlvbiBvZiBSQU4gZWxlbWVudHMgYW5kIHJlc291cmNlcyB2aWEgZmluZS1ncmFpbmVkCiAgICAgICAgZGF0YSBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgRTIgaW50ZXJmYWNlLiBJdCBtYXkgaW5jbHVkZQogICAgICAgIEFJL01MIChBcnRpZmljaWFsIEludGVsbGlnZW5jZSAvIE1hY2hpbmUgTGVhcm5pbmcpIHdvcmtmbG93CiAgICAgICAgaW5jbHVkaW5nIG1vZGVsIHRyYWluaW5nLCBpbmZlcmVuY2UsIGFuZCB1cGRhdGVzLgoKICAgICAgICBOb3RlOiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBOZWFyLVJUIFJJQyBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuZWFyUnRSaWNJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBOZWFyLVJUIFJJQyB3aXRoaW4gYSBOZWFyUlRSSUNGdW5jdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcExNTklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGdsb2JhbCBSQU4KICAgICAgICAgICAgICAgIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0RVRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKS4KCiAgICAgICAgVGhlIE8tRFUgaXMgYW4gTy1SQU4gTkYgaW4gdGhlIE8tUkFOIEFyY2hpdGVjdHVyZS4gQW4gTy1EVSwgY29tYmluZWQKICAgICAgICB3aXRoIG9uZSBvciBtb3JlIE8tUlUocykgY29ubmVjdGVkIHRvIGl0LCBzdXBwb3J0cyBhbmQgaXMgZnVsbHkKICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIGZ1bmN0aW9ucyBvZiBhIGdOQi1EVSBhcyBkZWZpbmVkIGJ5IDNHUFAgVFMgMzguNDAxLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1EVToKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tQ1UtQ1AgdGhyb3VnaCB0aGUgRjEtQyBpbnRlcmZhY2UuIElzCiAgICAgICAgY29ubmVjdGVkIHRvIHRoZSBPLUNVLVVQIHRocm91Z2ggdGhlIEYxLVUgaW50ZXJmYWNlLiBPbmUgTy1EVSBpcwogICAgICAgIGNvbm5lY3RlZCB0byBvbmx5IG9uZSBPLUNVLUNQLiBPbmUgTy1EVSBjYW4gYmUgY29ubmVjdGVkIHRvCiAgICAgICAgbXVsdGlwbGUgTy1DVS1VUHMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgTkctUkFOCiAgICAgICAgbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlCiAgICAgICAgdGhlIGdOQi1EVSBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJEVUlkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIERVIHdpdGhpbiBhIGdOb2RlQiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkTGVuZ3RoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMZW5ndGggb2YgZ05CSWQgYml0IHN0cmluZyByZXByZXNlbnRhdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0NVQ1BGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWxpemVkIFVuaXQgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhpcyBpcyBhIGxvZ2ljYWwgbm9kZSBob3N0aW5nIHRoZSBSYWRpbyBSZXNvdXJjZSBDb250cm9sIChSUkMpIGFuZAogICAgICAgIHRoZSBjb250cm9sIHBsYW5lIHBhcnQgb2YgdGhlIFBhY2tldCBEYXRhIENvbnZlcmdlbmNlIFByb3RvY29sCiAgICAgICAgKFBEQ1ApLiBUaGUgTy1DVS1DUCB0ZXJtaW5hdGVzIHRoZSBFMSBpbnRlcmZhY2UgY29ubmVjdGVkIHdpdGgKICAgICAgICB0aGUgTy1DVS1VUCBhbmQgdGhlIEYxLUMgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoIHRoZSBPLVJBTgogICAgICAgIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1DVS1DUDoKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tRFUgdGhyb3VnaCB0aGUgRjEtQyBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgIHRvIHRoZSBPLUNVLVVQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25seSBvbmUgTy1DVS1DUCBpcwogICAgICAgIGNvbm5lY3RlZCB0byBvbmUgTy1EVS4gT25seSBvbmUgTy1DVS1DUCBpcyBjb25uZWN0ZWQgdG8gb25lCiAgICAgICAgTy1DVS1VUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBPLUNVLVVQcyB1bmRlcgogICAgICAgIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuIE9uZSBPLUNVLVVQIGNhbiBiZSBjb25uZWN0ZWQgdG8KICAgICAgICBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gQW4gTy1DVS1DUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUKICAgICAgICBORy1SQU4gbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQKICAgICAgICBkZWxldGUgdGhlIE8tQ1UtQ1Agb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CQ1VOYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSWRlbnRpdHkgb2YgZ05vZGVCIHdpdGhpbiBhIFBMTU4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGVuZ3RoIG9mIGdOQklkIGJpdCBzdHJpbmcgcmVwcmVzZW50YXRpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOCiAgICAgICAgICAgICAgICBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIEFuIE8tQ1UtVVAgaXMgYSBsb2dpY2FsIG5vZGUgaG9zdGluZyB0aGUgVXNlciBQbGFuZSBwYXJ0IG9mIHRoZQogICAgICAgIFBhY2tldCBEYXRhIENvbnZlcmdlbmNlIFByb3RvY29sIChQRENQKSBhbmQgdGhlIFNlcnZpY2UgRGF0YQogICAgICAgIEFkYXB0YXRpb24gUHJvdG9jb2wgKFNEQVApLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIHRoZSBFMSBpbnRlcmZhY2UKICAgICAgICBjb25uZWN0ZWQgd2l0aCB0aGUgTy1DVS1DUCBhbmQgdGhlIEYxLVUgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoCiAgICAgICAgdGhlIE8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1DVS1VUDoKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tRFUgdGhyb3VnaCB0aGUgRjEtVSBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgIHRvIHRoZSBPLUNVLUNQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25lIE8tQ1UtVVAgaXMKICAgICAgICBjb25uZWN0ZWQgdG8gb25seSBvbmUgTy1DVS1DUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0bwogICAgICAgIG11bHRpcGxlIE8tQ1UtVVBzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuIE9uZQogICAgICAgIE8tQ1UtVVAgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlCiAgICAgICAgc2FtZSBPLUNVLUNQLgoKICAgICAgICBOb3RlOiBBIGdOQiBtYXkgY29uc2lzdCBvZiBhbiBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gQW4gTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUKICAgICAgICBORy1SQU4gbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQKICAgICAgICBkZWxldGUgdGhlIE8tQ1UtVVAgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxpc3QgcExNTklkTGlzdCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBQTE1OIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGdsb2JhbCBSQU4gbm9kZSBpZGVudGl0eSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUkNlbGxDVSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItQ1UuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBTaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24KICAgICAgICBTaWduYWwgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZAogICAgICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgY2VsbExvY2FsSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVzZWQgdG9nZXRoZXIgd2l0aCBnTm9kZUIgaWRlbnRpZmllciB0byBpZGVudGlmeSBOUgogICAgICAgICAgICAgICAgY2VsbCBpbiBQTE1OLiBVc2VkIHRvZ2V0aGVyIHdpdGggZ05CSWQgdG8gZm9ybSBOQ0kuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwbG1uSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gSUQgZm9yIE5SIENHSS4gSWYgZW1wdHksCiAgICAgICAgICAgICAgICBHTkJDVUNQRnVuY3Rpb246OnBMTU5JZCBpcyB1c2VkIGZvciBQTE1OIElEIGluIE5SIENHSSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbkNJIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsIElkZW50aXR5IjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJUQUMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFRyYWNraW5nIEFyZWEgQ29kZSAoVEFDKSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsRFUgewogICAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIGFuIE5SIENlbGwgaW4gZ05vZGVCLURVLgoKICAgICAgICA1RyBOUiBpcyBhIG5ldyByYWRpbyBhY2Nlc3MgdGVjaG5vbG9neSAoUkFUKSBkZXZlbG9wZWQgYnkgM0dQUCBmb3IKICAgICAgICB0aGUgNUcgKGZpZnRoIGdlbmVyYXRpb24pIG1vYmlsZSBuZXR3b3JrLiBJdCBpcyBkZXNpZ25lZCB0byBiZSB0aGUKICAgICAgICBnbG9iYWwgc3RhbmRhcmQgZm9yIHRoZSBhaXIgaW50ZXJmYWNlIG9mIDVHIG5ldHdvcmtzLgoKICAgICAgICA1RyBOUiBoYXMgc3luY2hyb25pemF0aW9uIHNpZ25hbCB0aGF0IGlzIGtub3duIGFzIFByaW1hcnkKICAgICAgICBTeW5jaHJvbml6YXRpb24gc2lnbmFsIChQU1MpIGFuZCBTZWNvbmRhcnkgU3luY2hyb25pemF0aW9uIHNpZ25hbAogICAgICAgIChTU1MpLiBUaGVzZSBzaWduYWxzIGFyZSBzcGVjaWZpYyB0byBOUiBwaHlzaWNhbCBsYXllciBhbmQgcHJvdmlkZQogICAgICAgIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgVUUgZm9yIGRvd25saW5rCiAgICAgICAgc3luY2hyb25pemF0aW9uOiBQU1MgcHJvdmlkZXMgUmFkaW8gRnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mIDFzdAogICAgICAgIFN5bWJvbCBpbiBhIFJhZGlvIGZyYW1lKSBTU1MgcHJvdmlkZXMgU3ViZnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mCiAgICAgICAgMXN0IFN5bWJvbCBpbiBhIFN1YmZyYW1lKSBQaHlzaWNhbCBMYXllciBDZWxsIElEIChQQ0kpIGluZm9ybWF0aW9uCiAgICAgICAgdXNpbmcgYm90aCBQU1MgYW5kIFNTUy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuUlBDSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIFBoeXNpY2FsIENlbGwgSWRlbnRpdHkgKFBDSSkgb2YgdGhlIE5SIGNlbGwuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJUQUMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFRyYWNraW5nIEFyZWEgQ29kZSAoVEFDKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SU2VjdG9yQ2FycmllciB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBOUiBTZWN0b3IgQ2FycmllciBvYmplY3QgcHJvdmlkZXMgdGhlIGF0dHJpYnV0ZXMgZm9yCiAgICAgICAgZGVmaW5pbmcgdGhlIGxvZ2ljYWwgY2hhcmFjdGVyaXN0aWNzIG9mIGEgY2FycmllciAoY2VsbCkgaW4gYQogICAgICAgIHNlY3Rvci4gQSBzZWN0b3IgaXMgYSBjb3ZlcmFnZSBhcmVhIGFzc29jaWF0ZWQgd2l0aCBhIGJhc2Ugc3RhdGlvbgogICAgICAgIGhhdmluZyBpdHMgb3duIGFudGVubmFzLCByYWRpbyBwb3J0cywgYW5kIGNvbnRyb2wgY2hhbm5lbHMuIFRoZQogICAgICAgIGNvbmNlcHQgb2Ygc2VjdG9ycyB3YXMgZGV2ZWxvcGVkIHRvIGltcHJvdmUgY28tY2hhbm5lbCBpbnRlcmZlcmVuY2UKICAgICAgICBpbiBjZWxsdWxhciBzeXN0ZW1zLCBhbmQgbW9zdCB3aXJlbGVzcyBzeXN0ZW1zIHVzZSB0aHJlZSBzZWN0b3IKICAgICAgICBjZWxscy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFyZmNuREwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIEFic29sdXRlIFJhZGlvIEZyZXF1ZW5jeSBDaGFubmVsIE51bWJlcgogICAgICAgICAgICAgICAgKE5SLUFSRkNOKSBmb3IgZG93bmxpbmsiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhcmZjblVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBmcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIHVwbGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBmcmVxdWVuY3lETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUkYgUmVmZXJlbmNlIEZyZXF1ZW5jeSBvZiBkb3dubGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5VUwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgdXBsaW5rIGNoYW5uZWwiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBiU0NoYW5uZWxCd0RMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJCUyBDaGFubmVsIGJhbmR3aWR0aCBpbiBNSHogZm9yIGRvd25saW5rLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgQW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIE1PIHNlcnZlcyBhcyBhIG1hcHBpbmcgYmV0d2VlbiB0aGUgY2VsbCBhbmQgdGhlIFJCUwogICAgICAgIGVxdWlwbWVudCB1c2VkIHRvIHByb3ZpZGUgY292ZXJhZ2UgaW4gYSBjZXJ0YWluIGdlb2dyYXBoaWNhbCBhcmVhLgogICAgICAgIFRoZSBNTyBhbHNvIGNvbnRyb2xzIHRoZSBtYXhpbXVtIG91dHB1dCBwb3dlciBvZiB0aGUgc2VjdG9yLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYtbGlzdCBlVXRyYW5GcUJhbmRzIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMaXN0IG9mIExURSBmcmVxdWVuY3kgYmFuZHMgdGhhdCBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICBoYXJkd2FyZSBzdXBwb3J0cyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGdlcmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBHRVJBTiBmcmVxdWVuY3kgYmFuZHMgdGhhdCBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICBoYXJkd2FyZSBzdXBwb3J0cyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IG5SRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBOUiBmcmVxdWVuY3kgYmFuZHMgYXNzb2NpYXRlZCBoYXJkd2FyZQogICAgICAgICAgICAgICAgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBTZWN0b3IgewogICAgICAgIGRlc2NyaXB0aW9uICJBIGdyb3VwIG9mIGNvLWxvY2F0ZWQgQ2VsbHMgdGhhdCBoYXZlIGEgc2hhcmVkCiAgICAgICAgY292ZXJhZ2UgYXJlYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIHNlY3RvcklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbml2ZXJzYWxseSB1bmlxdWUgSUQgZ2VuZXJhdGVkIGJ5IHRoZSBzZWN0b3IncwogICAgICAgICAgICAgICAgZGlzY292ZXJ5IG1lY2hhbmlzbS4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHVzZXMgZ2VvOmdlby1sb2NhdGlvbjsKCiAgICAgICAgICAgIGxlYWYgYXppbXV0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQXZlcmFnZSB2YWx1ZSBvZiB0aGUgYXppbXV0aHMgb2YgdGhlIGNlbGxzCiAgICAgICAgICAgICAgICBjb21wcmlzaW5nIHRoZSBzZWN0b3IsIGRldGVybWluZWQgZHVyaW5nIHNlY3RvciBkaXNjb3ZlcnkuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0ewogICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyAxOwogICAgICAgICAgICAgICAgICAgIHJhbmdlICIwLi4zNjAiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5pdHMgImRlY2ltYWwgZGVncmVlcyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMRFUgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgT0RVRnVuY3Rpb24gcmVwcmVzZW50cyB0aGUgRFUgY29tcG9uZW50IG9mIGEgZ05CIHRoYXQgcHJvdmlkZXMgdGhlIE5SQ2VsbERVLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJDZWxsRFVzLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9EVUZ1bmN0aW9uLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBwcm92aWRlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9QUk9WSURFU19OUlNFQ1RPUkNBUlJJRVIgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUlNlY3RvckNhcnJpZXIuCiAgICAgICAgICAgIEEgT0RVRnVuY3Rpb24gaW5zdGFuY2UgY2FuIHByb3ZpZGUgbWFueSBOUlNlY3RvckNhcnJpZXJzLgogICAgICAgICAgICBBbiBOUlNlY3RvckNhcnJpZXIgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBwcm92aWRlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMQ1UgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbENVIHR5cGUuCiAgICAgICAgICAgIFRoZSBPQ1VDUEZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIENVLUNQIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxDVS4KICAgICAgICAgICAgQSBPQ1VDUEZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJDZWxsQ1UuCiAgICAgICAgICAgIEFuIE5SQ2VsbENVIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0NVQ1BGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxDdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtQ1UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9DVUNQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLUNVIHByb3ZpZGVkIGJ5IE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SQ2VsbENVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SQ0VMTERVX1VTRVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbERVIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBOUkNlbGxEVSByZXByZXNlbnRzIHRoZSBjZWxsIHRoYXQgdXNlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBjYW4gdXNlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiBvbmx5IGJlIHVzZWQgYnkgb25lIE5SQ2VsbERVLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHVzZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgdXNlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdXNlZC1ieS1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VkIGJ5IE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SU0VDVE9SQ0FSUklFUl9VU0VTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFDYXBhYmlsaXR5IHR5cGUuCiAgICAgICAgICAgIFRoZSBOUlNlY3RvckNhcnJpZXIgcmVwcmVzZW50cyB0aGUgY2FycmllciB0aGF0IHVzZXMgdGhlIEFudGVubmFDYXBhYmlsaXR5LgogICAgICAgICAgICBBbiBOUlNlY3RvckNhcnJpZXIgaW5zdGFuY2UgY2FuIHVzZSBvbmx5IG9uZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHVzZWQgYnkgbWFueSBOUlNlY3RvckNhcnJpZXJzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiB1c2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHVzZXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLWJ5LW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIENhcGFiaWxpdHkgdXNlZCBieSBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgQW50ZW5uYUNhcGFiaWxpdHk7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX05SQ0VMTERVIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNlY3RvciB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbERVIHR5cGUuCiAgICAgICAgICAgIFRoZSBTZWN0b3IgcmVwcmVzZW50cyB0aGUgZ2VvZ3JhcGhpY2FsIGFyZWEgdGhhdCBncm91cHMgdGhlIE5SQ2VsbERVcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgTlJDZWxsRFVzLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBjYW4gb25seSBiZSBncm91cGVkIGJ5IG9uZSBTZWN0b3IuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZ3JvdXBlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIFNlY3RvcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBncm91cGVkLWJ5LXNlY3RvciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIGdyb3VwZWQgYnkgU2VjdG9yLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
+o-ran-smo-teiv-physical        urn:o-ran:smo-teiv-physical     PHYSICAL        []      2025-04-14      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXBoeXNpY2FsIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXBoeXNpY2FsIjsKICBwcmVmaXggb3ItdGVpdi1waHlzaWNhbDsKCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICBvcmdhbml6YXRpb24gIk8tUkFOIEFsbGlhbmNlIjsKCiAgY29udGFjdAogICAgInd3dy5vLXJhbi5vcmciOwoKICBkZXNjcmlwdGlvbgogICAgIlBoeXNpY2FsIGRvbWFpbiB0b3BvbG9neSBtb2RlbC4KICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBQaHlzaWNhbCBkb21haW4uCgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjUgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCiAgICBDb3B5cmlnaHQgMjAyNSB0aGUgTy1SQU4gQWxsaWFuY2UuCgogICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAnQVMgSVMnCiAgICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogICAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQogICAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKICAgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwogICAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KICAgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCiAgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQogICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgYWJvdmUgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBhYm92ZSBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAgICogTmVpdGhlciB0aGUgTWVtYmVycyBvZiB0aGUgTy1SQU4gQWxsaWFuY2Ugbm9yIHRoZSBuYW1lcyBvZiBpdHMKICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiI7CgogIHJldmlzaW9uICIyMDI1LTA0LTE0IiB7CiAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXR0cmlidXRlcyBjb250YWluZXIgdG8gU2l0ZSI7CiAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4xLjA7CiAgfQoKICByZXZpc2lvbiAiMjAyNS0wMi0xMCIgewogICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMC4wOwogICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgfQoKICBvci10ZWl2LXlleHQ6ZG9tYWluIFBIWVNJQ0FMOwoKICBsaXN0IFBoeXNpY2FsQXBwbGlhbmNlIHsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgUGh5c2ljYWwgQXBwbGlhbmNlIGluIHRoZSBQaHlzaWNhbCBkb21haW4iOwoKICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgUGh5c2ljYWwgQXBwbGlhbmNlIGF0dHJpYnV0ZXMiOwogICAgICBsZWFmIHZlbmRvck5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgdmVuZG9yIjsKICAgICAgfQoKICAgICAgbGVhZiBtb2RlbE5hbWUgewogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIHRoZSBwaHlzaWNhbCBhcHBsaWFuY2UgbW9kZWwiOwogICAgICB9CiAgICB9CiAgfQoKICBsaXN0IFNpdGUgewogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAga2V5IGlkOwoKICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIHRoZSBTaXRlIGluIHRoZSBQaHlzaWNhbCBkb21haW4iOwoKICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgY29udGFpbmVyIHNpdGVMb2NhdGlvbiB7CiAgICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50YXRpb24gb2YgcGh5c2ljYWwgc2l0ZSBsb2NhdGlvbiI7CiAgICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6R2VvSW5mb3JtYXRpb247CiAgICAgIH0KICAgICAgbGVhZiBzaXRlTmFtZSB7CiAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgZGVzY3JpcHRpb24gIkh1bWFuIHJlYWRhYmxlIG5hbWUgb2YgdGhlIHBoeXNpY2FsIHNpdGUgYXMgaWRlbnRpZmllZCBieSB0aGUgbW9iaWxlIG5ldHdvcmsgb3BlcmF0b3IiOwogICAgICB9CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX0lOU1RBTExFREFUX1NJVEUgeyAvLyAxLi5uIHRvIDEuLm0KICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKICAgIGRlc2NyaXB0aW9uICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFBoeXNpY2FsQXBwbGlhbmNlIHR5cGUuCiAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNpdGUgdHlwZS4iOwoKICAgIGxlYWYtbGlzdCBpbnN0YWxsaW5nLXNpdGUgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSBpbnN0YWxsaW5nIFBoeXNpY2FsQXBwbGlhbmNlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIFBoeXNpY2FsQXBwbGlhbmNlOyAKICAgIH0KCiAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLXBoeXNpY2FsQXBwbGlhbmNlIHsKICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgZGVzY3JpcHRpb24gIlBoeXNpY2FsQXBwbGlhbmNlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7ICAKICAgIH0KICB9Cn0K
+o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2025-04-01      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAiUkFOIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICAgICAgUkFOIExvZ2ljYWwgZG9tYWluLCB3aGljaCByZXByZXNlbnRzIHRoZSBmdW5jdGlvbmFsIGNhcGFiaWxpdHkKICAgICAgICBvZiB0aGUgZGVwbG95ZWQgUkFOIHRoYXQgYXJlIHJlbGV2YW50IHRvIHJBcHBzIHVzZSBjYXNlcy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQtMjAyNSBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI1LTA0LTAxIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gaW50cm9kdWNlcyBTTU8gYW5kIE8xIGludGVyZmFjZSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4zOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI1LTAzLTI4IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gaW50cm9kdWNlcyBFMiBhbmQgT3BlbiBGcm9udGhhdWwgaW50ZXJmYWNlcyI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4yOwogICAgfQogICAgCiAgICByZXZpc2lvbiAiMjAyNS0wMy0yMCIgewogICAgICAgIGRlc2NyaXB0aW9uICJQcm9wb3NlZCBlbnRpdGllcywgcmVsYXRpb25zaGlwcyBhbmQgYXR0cmlidXRlcyI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDEuMS4xOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI1LTAyLTE0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJldmlzaW9uIHRvIHJlbmFtZSBhZGFwdGVyIGdyb3VwIHRvIG9yaWdpbiBncm91cC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjEuMDsKICAgICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMi4wMCI7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMTAiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAxLjAuMDsKICAgICAgICByZWZlcmVuY2UgIk8tUkFOLldHMTAuVEUmSVYtRE0uMC1SMDA0LXYwMS4wMCI7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSQU47CgogICAgbGlzdCBTTU8gewogICAgICAgIGRlc2NyaXB0aW9uICJTZXJ2aWNlIE1hbmFnZW1lbnQgYW5kIE9yY2hlc3RyYXRpb24gKFNNTykuCgogICAgICAgIEEgY2VudHJhbGl6ZWQgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciB0aGUgbWFuYWdlbWVudCwgb3JjaGVzdHJhdGlvbiwKICAgICAgICBhbmQgYXV0b21hdGlvbiBvZiB0aGUgZW50aXJlIFJBTiBpbmZyYXN0cnVjdHVyZS4gU01PIGVuYWJsZXMgZmxleGlibGUsCiAgICAgICAgc29mdHdhcmUtZHJpdmVuIG5ldHdvcmsgY29udHJvbCBhbmQgaXMgY3JpdGljYWwgZm9yIGVuYWJsaW5nIHRoZSBvcGVuLAogICAgICAgIGludGVyb3BlcmFibGUsIGFuZCBkaXNhZ2dyZWdhdGVkIGFwcHJvYWNoIHRoYXQgZGVmaW5lcyBPLVJBTi4KCiAgICAgICAgSW4gdGhlIE8tUkFOIGFyY2hpdGVjdHVyZSwgdGhlIFNNTyBpcyBwYXJ0IG9mIHRoZSBtYW5hZ2VtZW50IGFuZAogICAgICAgIG9yY2hlc3RyYXRpb24gbGF5ZXIsIHNpdHRpbmcgYWJvdmUgdGhlIFJBTiBlbGVtZW50cyBsaWtlIHRoZSBSVSwgRFUsCiAgICAgICAgYW5kIENVLiBJdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgUkFOIHVzaW5nIG9wZW4gaW50ZXJmYWNlcywKICAgICAgICBwYXJ0aWN1bGFybHkgTzEgYW5kIEExIGludGVyZmFjZXMiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIHNtb05hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgdGhlIFNNTyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9EVUZ1bmN0aW9uIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgTy1EVSBpcyBhbiBPLVJBTiBORiBpbiB0aGUgTy1SQU4gQXJjaGl0ZWN0dXJlLiBBbiBPLURVLCBjb21iaW5lZCB3aXRoCiAgICAgICAgb25lIG9yIG1vcmUgTy1SVShzKSBjb25uZWN0ZWQgdG8gaXQsIHN1cHBvcnRzIGFuZCBpcyBmdWxseSBjb21wYXRpYmxlCiAgICAgICAgd2l0aCB0aGUgZnVuY3Rpb25zIG9mIGEgZ05CLURVIGFzIGRlZmluZWQgYnkgM0dQUCBUUyAzOC40MDEuCgogICAgICAgIFRoZSBPLURVIHRlcm1pbmF0ZXMgdGhlIEUyIGFuZCB0aGUgRjEgaW50ZXJmYWNlLCBhbmQgdGhlIE9wZW4gRnJvbnRoYXVsCiAgICAgICAgaW50ZXJmYWNlIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgdGhlIFJMQywgTUFDLCBhbmQKICAgICAgICBIaWdoLVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIHRoZSBVRS4KCiAgICAgICAgTm90ZTogTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLURVIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLURVIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5IHRoZQogICAgICAgIElPQyBHTkJEVUZ1bmN0aW9uIGFzIHNwZWNpZmllZCBpbiAzR1BQIE5SIE5STSBtb2RlbCwgYXMgcGVyIDNHUFAgVFMgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKSBhdHRyaWJ1dGVzIjsKCiAgICAgICAgICAgIGxlYWYgZ05CRFVJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRFUgd2l0aGluIGEgZ05vZGVCIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVUNQRnVuY3Rpb24gewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWwgVW5pdCDigJMgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhlIE8tQ1UtQ1AgdGVybWluYXRlcyB0aGUgTkctYywgWDItYywgWG4tYywgRjEtYywgYW5kIEUxIGludGVyZmFjZXMgYXMKICAgICAgICB3ZWxsIGFzIHRoZSBSUkMgYW5kIFBEQ1AgKGZvciBTUkIpIHByb3RvY29scyB0b3dhcmRzIHRoZSBVRSBhcyBkZWZpbmVkIGJ5CiAgICAgICAgM0dQUCBUUyAzOC40MDEuIFRoZSBPLUNVLUNQIHRlcm1pbmF0ZXMgRTIgaW50ZXJmYWNlIHRvIE5lYXItUlQgUklDIGFuZCBpcwogICAgICAgIG1hbmFnZWQgdmlhIE8xIGludGVyZmFjZSBieSB0aGUgU01PLgoKICAgICAgICBOb3RlOiBPLUNVLUNQIGlzIGEgY29uY3JldGUgY2xhc3MgdGhhdCBleHRlbmRzIHRoZSBPUkFOTmV0d29ya0Z1bmN0aW9uCiAgICAgICAgYWJzdHJhY3QgY2xhc3MuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoZQogICAgICAgIE8tQ1UtQ1Agb2JqZWN0LgogICAgICAgICAgICAKICAgICAgICBUaGUgbWFuYWdlbWVudCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIE8tQ1UtQ1AgTy1SQU4gTkYgaXMgcmVwcmVzZW50ZWQgYnkKICAgICAgICB0aGUgSU9DIEdOQkNVQ1BGdW5jdGlvbiBhcyBzcGVjaWZpZWQgaW4gM0dQUCBOUiBOUk0gbW9kZWwsIGFzIHBlciAzR1BQIFRTCiAgICAgICAgMjguNTQxIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ29udGFpbmVyIGZvciBPLVJBTiBDZW50cmFsIFVuaXQg4oCTIENvbnRyb2wgUGxhbmUgKE8tQ1UtQ1ApIGF0dHJpYnV0ZXMiOwogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTiBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24geyAgICAgICAgCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIFRoZSBPLUNVLVVQIHRlcm1pbmF0ZXMgdGhlIE5HLXUsIFgyLXUsIFhuLXUsIEYxLXUsIGFuZCBFMSBpbnRlcmZhY2VzIGFzCiAgICAgICAgd2VsbCBhcyB0aGUgUERDUCBhbmQgU0RBUCBwcm90b2NvbHMgdG93YXJkcyB0aGUgVUUgYXMgZGVmaW5lZCBieSAzR1BQIFRTCiAgICAgICAgMzguNDAxLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIEUyIGludGVyZmFjZSB0byBOZWFyLVJUIFJJQyBhbmQgaXMgbWFuYWdlZAogICAgICAgIHZpYSBPMSBpbnRlcmZhY2UgYnkgdGhlIFNNTy4KCiAgICAgICAgTm90ZTogTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgT1JBTk5ldHdvcmtGdW5jdGlvbgogICAgICAgIGFic3RyYWN0IGNsYXNzLiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSB0aGUKICAgICAgICBPLUNVLVVQIG9iamVjdC4KCiAgICAgICAgVGhlIG1hbmFnZW1lbnQgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBPLUNVLVVQIE8tUkFOIE5GIGlzIHJlcHJlc2VudGVkIGJ5CiAgICAgICAgdGhlIElPQyBHTkJDVVVQRnVuY3Rpb24gYXMgc3BlY2lmaWVkIGluIDNHUFAgTlIgTlJNIG1vZGVsLCBhcyBwZXIgM0dQUCBUUwogICAgICAgIDI4LjU0MSI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gQ2VudHJhbCBVbml0IOKAkyBVc2VyIFBsYW5lIChPLUNVLVVQKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGlzdCBwTE1OSWRMaXN0IHsKICAgICAgICAgICAgICAgIGtleSAibWNjIG1uYyI7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiB1bmlxdWUgaWRlbnRpdGllcyBmb3IgUExNTiI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGRlc2NyaXB0aW9uICJOZWFyLVJlYWwtVGltZSBSQU4gSW50ZWxsaWdlbnQgQ29udHJvbGxlciAoTmVhci1SVCBSSUMpLgoKICAgICAgICBOZWFyLVJUIFJJQyBpcyBhbiBPLVJBTiBORiB0aGF0IGVuYWJsZXMgbmVhciByZWFsLXRpbWUgY29udHJvbCBhbmQKICAgICAgICBvcHRpbWl6YXRpb24gb2Ygc2VydmljZXMgYW5kIHJlc291cmNlcyBvZiBFMiBOb2RlcyB2aWEgZmluZS1ncmFpbmVkIGRhdGEKICAgICAgICBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgdGhlIEUyIGludGVyZmFjZSB3aXRoIGNvbnRyb2wgbG9vcHMgaW4gdGhlCiAgICAgICAgb3JkZXIgb2YgMTAgbXMtMXMuIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKSBhdHRyaWJ1dGVzIjsKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5lYXJSdFJpY0lkIHsKICAgICAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGlmaWVyIG9mIE5lYXItUlQgUklDIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT1JVRnVuY3Rpb24gewoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpCgogICAgICAgIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZSAoYWxzbyBrbm93biBhcyBMTFMKICAgICAgICBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIAogICAgICAgIHRoZSBVRS4gVGhpcyBpcyBkZXBsb3llZCBhcyBhIFBORi4KCiAgICAgICAgVGhlIE8tUlUgdGVybWluYXRlcyB0aGUgT3BlbiBGcm9udGhhdWwgTS1QbGFuZSBpbnRlcmZhY2UgdG93YXJkcyB0aGUgTy1EVQogICAgICAgIGFuZCBTTU8uIjsKCgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNvbnRhaW5lciBmb3IgTy1SQU4gUmFkaW8gVW5pdCAoTy1SVSkgYXR0cmlidXRlcyI7CiAgICAgICAgICAgIGxlYWYgb3J1SWQgewogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiB0aGUgTy1SVSBhcyBkaXNjb3ZlcmVkIGZyb20gdGhlIHNvdXJjZSBkb21haW4gYmFzZWQgb24gTS1QbGFuZSBhcmNoaXRlY3R1cmUgbW9kZWwiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsQ1UgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1DVS4KCiAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yCiAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcyBQcmltYXJ5CiAgICAgICAgU3luY2hyb25pemF0aW9uIFNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbgogICAgICAgIFNpZ25hbCAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kCiAgICAgICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5IFVFIGZvciBkb3dubGluawogICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgIDFzdCBTeW1ib2wgaW4gYSBTdWJmcmFtZSkgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbgogICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElEIGZvciBOUiBDR0kuIElmIGVtcHR5LAogICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItRFUuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBzaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24gc2lnbmFsCiAgICAgICAgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZCBwcm92aWRlCiAgICAgICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUlNlY3RvckNhcnJpZXIgewogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE5SIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcyB0aGUgYXR0cmlidXRlcyBmb3IKICAgICAgICBkZWZpbmluZyB0aGUgbG9naWNhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBjYXJyaWVyIChjZWxsKSBpbiBhCiAgICAgICAgc2VjdG9yLiBBIHNlY3RvciBpcyBhIGNvdmVyYWdlIGFyZWEgYXNzb2NpYXRlZCB3aXRoIGEgYmFzZSBzdGF0aW9uCiAgICAgICAgaGF2aW5nIGl0cyBvd24gYW50ZW5uYXMsIHJhZGlvIHBvcnRzLCBhbmQgY29udHJvbCBjaGFubmVscy4gVGhlCiAgICAgICAgY29uY2VwdCBvZiBzZWN0b3JzIHdhcyBkZXZlbG9wZWQgdG8gaW1wcm92ZSBjby1jaGFubmVsIGludGVyZmVyZW5jZQogICAgICAgIGluIGNlbGx1bGFyIHN5c3RlbXMsIGFuZCBtb3N0IHdpcmVsZXNzIHN5c3RlbXMgdXNlIHRocmVlIHNlY3RvcgogICAgICAgIGNlbGxzLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBhcmZjbkRMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBGcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIGRvd25saW5rIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25VTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gZnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgTU8gc2VydmVzIGFzIGEgbWFwcGluZyBiZXR3ZWVuIHRoZSBjZWxsIGFuZCB0aGUgUkJTCiAgICAgICAgZXF1aXBtZW50IHVzZWQgdG8gcHJvdmlkZSBjb3ZlcmFnZSBpbiBhIGNlcnRhaW4gZ2VvZ3JhcGhpY2FsIGFyZWEuCiAgICAgICAgVGhlIE1PIGFsc28gY29udHJvbHMgdGhlIG1heGltdW0gb3V0cHV0IHBvd2VyIG9mIHRoZSBzZWN0b3IuIjsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmLWxpc3QgZVV0cmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBMVEUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBuUkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTlIgZnJlcXVlbmN5IGJhbmRzIGFzc29jaWF0ZWQgaGFyZHdhcmUKICAgICAgICAgICAgICAgIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgZGVzY3JpcHRpb24gIkEgZ3JvdXAgb2YgY28tbG9jYXRlZCBDZWxscyB0aGF0IGhhdmUgYSBzaGFyZWQKICAgICAgICBjb3ZlcmFnZSBhcmVhLiI7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZyBzZWN0b3IgZGlzY292ZXJ5LiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9EVUZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTERVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJDZWxsRFUgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQSBPRFVGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBPRFVGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBEVSBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0RVRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHByb3ZpZGVkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUEZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTENVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxDVSB0eXBlLgogICAgICAgICAgICBUaGUgT0NVQ1BGdW5jdGlvbiByZXByZXNlbnRzIHRoZSBDVS1DUCBjb21wb25lbnQgb2YgYSBnTkIgdGhhdCBwcm92aWRlcyB0aGUgTlJDZWxsQ1UuCiAgICAgICAgICAgIEEgT0NVQ1BGdW5jdGlvbiBpbnN0YW5jZSBjYW4gcHJvdmlkZSBtYW55IE5SQ2VsbENVLgogICAgICAgICAgICBBbiBOUkNlbGxDVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJDZWxsQ3UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBwcm92aWRlcyBOUiBDZWxsLUNVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LW9jdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1DVSBwcm92aWRlZCBieSBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxDVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUkNFTExEVV9VU0VTX05SU0VDVE9SQ0FSUklFUiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgTlJDZWxsRFUgcmVwcmVzZW50cyB0aGUgY2VsbCB0aGF0IHVzZXMgdGhlIE5SU2VjdG9yQ2Fycmllci4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIHVzZSBtYW55IE5SU2VjdG9yQ2FycmllcnMuCiAgICAgICAgICAgIEFuIE5SU2VjdG9yQ2FycmllciBpbnN0YW5jZSBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBOUkNlbGxEVS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHVzZXMgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5SQ2VsbERVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHVzZWQtYnktbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgdXNlZCBieSBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUlNFQ1RPUkNBUlJJRVJfVVNFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eSB0eXBlLgogICAgICAgICAgICBUaGUgTlJTZWN0b3JDYXJyaWVyIHJlcHJlc2VudHMgdGhlIGNhcnJpZXIgdGhhdCB1c2VzIHRoZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiB1c2Ugb25seSBvbmUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFDYXBhYmlsaXR5IGluc3RhbmNlIGNhbiBiZSB1c2VkIGJ5IG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBTZWN0b3IgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEEgU2VjdG9yIGluc3RhbmNlIGNhbiBncm91cCBtYW55IE5SQ2VsbERVcy4KICAgICAgICAgICAgQW4gTlJDZWxsRFUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ1VDUEZVTkNUSU9OX0UxTElOS19PQ1VVUEZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVUNQRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRTEgbGluayBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9jdWNwRnVuY3Rpb24tZTItbGlua2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVUNQIEZ1bmN0aW9uIGxpbmtzIE8tQ1VVUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9jdXVwRnVuY3Rpb24tZTItbGlua2VkLWJ5LW9jdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVVVQIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOZWFyUlRSSUNGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIEUyIGxpbmsgYmV0d2VlbiB0aGUKICAgICAgICAgICAgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1lMi1saW5rZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBuZWFyUlRSSUNGdW5jdGlvbi1lMi1saW5rZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0NVQ1BGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGVU5DVElPTiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRTIgbGluayBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9jdWNwRnVuY3Rpb24tZTItbGlua2VkLW5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1VDUCBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG5lYXJSVFJJQ0Z1bmN0aW9uLWUyLWxpbmtlZC1ieS1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5lYXIgUlQgUklDIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0NVVVBGVU5DVElPTl9FMkxJTktfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVVVBGVU5DVElPTiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRTIgbGluayBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9jdXVwRnVuY3Rpb24tZTItbGlua2VkLW5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1VVUCBGdW5jdGlvbiBsaW5rcyBOZWFyIFJUIFJJQyBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG5lYXJSVFJJQ0Z1bmN0aW9uLWUyLWxpbmtlZC1ieS1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5lYXIgUlQgUklDIEZ1bmN0aW9uIGxpbmtlZCBieSBPLUNVVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT1JVRlVOQ1RJT05fT0ZITUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBNLVBsYW5lIEludGVyZmFjZSBiZXR3ZWVuIHRoZQogICAgICAgICAgICBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9ydUZ1bmN0aW9uLW9maG0tbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIFNNTy4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzbW8tb2ZobS1saW5rZWQtYnktb3J1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU01PIGxpbmtlZCBieSBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PRkhNTElOS19PRFVGVU5DVElPTiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBNLVBsYW5lIEludGVyZmFjZSBiZXR3ZWVuCiAgICAgICAgICAgIHRoZSBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9ydUZ1bmN0aW9uLW9maG0tbGlua2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tUlUgRnVuY3Rpb24gbGlua3MgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBvZHVGdW5jdGlvbi1vZmhtLWxpbmtlZC1ieS1vcnVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIGxpbmtlZCBieSBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPRFVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9SVUZVTkNUSU9OX09GSENMSU5LX09EVUZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcHMgZGVmaW5lcyBhbiBPcGVuIEZIIChGcm9udGhhdWwpIENvbnRyb2wgSW50ZXJmYWNlIGJldHdlZW4KICAgICAgICAgICAgdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tb2ZoYy1saW5rZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBsaW5rcyBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPUlVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9kdUZ1bmN0aW9uLW9maGMtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua2VkIGJ5IE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT1JVRlVOQ1RJT05fT0ZIVUxJTktfT0RVRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT1JVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIE9wZW4gRkggKEZyb250aGF1bCkgVXNlciBJbnRlcmZhY2UgYmV0d2VlbgogICAgICAgICAgICB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvcnVGdW5jdGlvbi1vZmh1LWxpbmtlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk9SVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgb2R1RnVuY3Rpb24tb2ZodS1saW5rZWQtYnktb3J1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rZWQgYnkgTy1SVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PRkhTTElOS19PRFVGVU5DVElPTiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gT3BlbiBGSCAoRnJvbnRoYXVsKSBTeW5jaHJvbml6YXRpb24gSW50ZXJmYWNlCiAgICAgICAgICAgIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tb2Zocy1saW5rZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBsaW5rcyBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPUlVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IG9kdUZ1bmN0aW9uLW9maHMtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua2VkIGJ5IE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fTzFMSU5LX1NNTyB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNNTyB0eXBlLgogICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwcyBkZWZpbmVzIGFuIE8xIEludGVyZmFjZSBiZXR3ZWVuIHRoZSBhU2lkZSBhbmQgYlNpZGUuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIG9kdUZ1bmN0aW9uLW8xLWxpbmtlZC1zbW8gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBsaW5rcyBTTU8uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTTU8gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOlNNTzsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fTzFMSU5LX1NNTyB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb2N1Y3BGdW5jdGlvbi1vMS1saW5rZWQtc21vIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtQ1AgRnVuY3Rpb24gbGlua3MgU01PLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNNTyBsaW5rZWQgYnkgTmVhciBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPUlVGVU5DVElPTl9PMUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9SVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgb3J1RnVuY3Rpb24tbzEtbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLVJVIEZ1bmN0aW9uIGxpbmtzIFNNTy4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzbW8tbzEtbGlua2VkLWJ5LW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNNTyBsaW5rcyBPLVJVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORUFSUlRSSUNGVU5DVElPTl9PMUxJTktfU01PIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU01PIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gTzEgSW50ZXJmYWNlIGJldHdlZW4gdGhlIGFTaWRlIGFuZCBiU2lkZS4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgbmVhclJUUklDRnVuY3Rpb24tbzEtbGlua2VkLXNtbyB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyIFJUIFJJQyBGdW5jdGlvbiBsaW5rcyBTTU8uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc21vLW8xLWxpbmtlZC1ieS1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTTU8gbGlua2VkIGJ5IE5lYXIgUlQgUklDIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpTTU87CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9GMVVMSU5LX09DVVVQRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRjEtdSBJbnRlcmZhY2UgYmV0d2VlbiB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1mMS11LWxpbmtlZC1vY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua3MgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBvY3V1cEZ1bmN0aW9uLWYxLXUtbGlua2VkLWJ5LW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtVVAgRnVuY3Rpb24gbGlua2VkIGJ5IE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9GMUNMSU5LX09DVUNQRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLjEKCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRlVOQ1RJT04gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZVTkNUSU9OIHR5cGUuCiAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXBzIGRlZmluZXMgYW4gRjEtYyBJbnRlcmZhY2UgYmV0d2VlbiB0aGUgYVNpZGUgYW5kIGJTaWRlLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBvZHVGdW5jdGlvbi1mMS1jLWxpbmtlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gbGlua3MgTy1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgb2N1Y3BGdW5jdGlvbi1mMS1jLWxpbmtlZC1ieS1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIGxpbmtlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQp9
 o-ran-smo-teiv-rel-cloud-ran   urn:o-ran:smo-teiv-rel-cloud-ran        REL_CLOUD_RAN   ["o-ran-smo-teiv-cloud", "o-ran-smo-teiv-ran"]  2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0xMC0wNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJBZGRlZCBncm91cGluZywgT3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycCB0byB0aGUgdG9wb2xvZ3kgb2JqZWN0LiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0NMT1VEX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfT0RVRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLURVIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX09DVUNQRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tQ1UtQ1AgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBPLUNVLUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19PQ1VVUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2N1dXBGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyUlRSSUNGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE5lYXJSVFJJQ0Z1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOZWFyUlRSSUNGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
 o-ran-smo-teiv-rel-equipment-ran       urn:o-ran:smo-teiv-rel-equipment-ran    REL_EQUIPMENT_RAN       ["o-ran-smo-teiv-equipment", "o-ran-smo-teiv-ran"]      2024-10-08      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFkZGVkIG5ldyByZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9TRVJWRVNfTlJDRUxMRFUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0VRVUlQTUVOVF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX1NFUlZFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYUNhcGFiaWxpdHkgdHlwZS4KICAgICAgICAgICAgVGhlIEFudGVubmFNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYW50ZW5uYSB0aGF0IHNlcnZlcyB0aGUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIHNlcnZlIG1hbnkgQW50ZW5uYUNhcGFiaWxpdGllcy4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHNlcnZlZCBieSBtYW55IEFudGVubmFNb2R1bGVzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgQ2FwYWJpbGl0eSBzZXJ2aWNlZCBieSB0aGlzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWVxdWlwOkFudGVubmFNb2R1bGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgc2VydmVzIHRoaXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpBbnRlbm5hQ2FwYWJpbGl0eTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX05SQ0VMTERVIHsgLy8gMS4ubiB0byAwLi5tCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFNb2R1bGUgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgQW50ZW5uYU1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhbnRlbm5hIHRoYXQgc2VydmVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQW4gQW50ZW5uYU1vZHVsZSBpbnN0YW5jZSBjYW4gc2VydmUgbWFueSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEFuIE5SQ2VsbERVIGluc3RhbmNlIGNhbiBiZSBzZXJ2ZWQgYnkgbWFueSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX0FOVEVOTkFNT0RVTEUgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2VjdG9yIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYU1vZHVsZSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgZ3JvdXBlZCBieSBTZWN0b3IuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
 o-ran-smo-teiv-rel-oam-cloud   urn:o-ran:smo-teiv-rel-oam-cloud        REL_OAM_CLOUD   ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-cloud"]  2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fQ0xPVUQ7CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9ERVBMT1lFRF9BU19DTE9VRElGSUVETkYgeyAgLy8gMC4uMSB0byAxCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGRlcGxveWVkLWFzLWNsb3VkaWZpZWRORiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgZGVwbG95ZWQgYXMgQ2xvdWRpZmllZCBORi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZGVwbG95ZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWRpZmllZCBORiBkZXBsb3lzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1jbG91ZDpDbG91ZGlmaWVkTkY7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19NQU5BR0VERUxFTUVOVCB7IC8vIDEuLm4gdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBzZXJ2aWNlZC1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LW9hbTpNYW5hZ2VkRWxlbWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9Cn0=
 o-ran-smo-teiv-rel-oam-ran     urn:o-ran:smo-teiv-rel-oam-ran  REL_OAM_RAN     ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-ran"]    2024-10-04      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtb2FtLXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtb2FtcmFuOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7IHByZWZpeCBvci10ZWl2LW9hbTsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICAgICAiUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSBSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjUuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fUkFOOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PRFVGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0RVRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9EVUZ1bmN0aW9ucy4KICAgICAgICAgICAgQW4gT0RVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PQ1VDUEZVTkNUSU9OIHsgICAgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE1hbmFnZWRFbGVtZW50IHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9DVUNQRnVuY3Rpb25zLgogICAgICAgICAgICBBbiBPQ1VDUEZ1bmN0aW9uIGluc3RhbmNlIG11c3QgYmUgbWFuYWdlZCBieSBvbmUgTWFuYWdlZEVsZW1lbnQuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX09DVVVQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0NVVVBGdW5jdGlvbi4KICAgICAgICAgICAgQSBNYW5hZ2VkRWxlbWVudCBpbnN0YW5jZSBjYW4gbWFuYWdlIG1hbnkgT0NVVVBGdW5jdGlvbnMuCiAgICAgICAgICAgIEFuIE9DVVVQRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VVUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT1JVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9SVUZ1bmN0aW9uLgogICAgICAgICAgICBBIE1hbmFnZWRFbGVtZW50IGluc3RhbmNlIGNhbiBtYW5hZ2UgbWFueSBPUlVGdW5jdGlvbi4KICAgICAgICAgICAgQW4gT1JVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19ORUFSUlRSSUNGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgTmVhclJUUklDRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE5lYXJSVFJJQ0Z1bmN0aW9uLgogICAgICAgICAgICBBbiBOZWFyUlRSSUNGdW5jdGlvbiBpbnN0YW5jZSBtdXN0IGJlIG1hbmFnZWQgYnkgb25lIE1hbmFnZWRFbGVtZW50LgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTmVhciBSVCBSSUMgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KfQ==
+o-ran-smo-teiv-rel-physical-ran        urn:o-ran:smo-teiv-rel-physical-ran     REL_PHYSICAL_RAN        ["o-ran-smo-teiv-physical", "o-ran-smo-teiv-ran"]       2025-04-14      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1waHlzaWNhbC1yYW4gewogIHlhbmctdmVyc2lvbiAxLjE7CiAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmVsLXBoeXNpY2FsLXJhbiI7CiAgcHJlZml4IG9yLXRlaXYtcmVsLXBoeXJhbjsKCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1waHlzaWNhbCB7IHByZWZpeCBvci10ZWl2LXBoeXNpY2FsOyB9CgogIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgb3JnYW5pemF0aW9uICJPLVJBTiBBbGxpYW5jZSI7CgogIGNvbnRhY3QKICAgICJ3d3cuby1yYW4ub3JnIjsKCiAgZGVzY3JpcHRpb24KICAgICJQaHlzaWNhbCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBkb21haW4gbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlCiAgICBwaHlzaWNhbCBkb21haW4gYW5kIHRoZSBSQU4gZG9tYWluLgoKICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI1IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQogICAgQ29weXJpZ2h0IDIwMjUgdGhlIE8tUkFOIEFsbGlhbmNlLgoKICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgJ0FTIElTJwogICAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICAgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKICAgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKICAgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCiAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKICAgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCiAgICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQogICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGFib3ZlIGRpc2NsYWltZXIuCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgYWJvdmUgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgICAqIE5laXRoZXIgdGhlIE1lbWJlcnMgb2YgdGhlIE8tUkFOIEFsbGlhbmNlIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4iOwoKICAgIHJldmlzaW9uICIyMDI1LTA0LTE0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkZvcm1hdHRpbmcuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4xLjA7CiAgICB9CgogIHJldmlzaW9uICIyMDI1LTAyLTEwIiB7CiAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMS4wLjA7CiAgICAgIHJlZmVyZW5jZSAiTy1SQU4uV0cxMC5URSZJVi1ETS4wLVIwMDQtdjAyLjAwIjsKICB9CgogIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX1BIWVNJQ0FMX1JBTjsKCiAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBQSFlTSUNBTEFQUExJQU5DRV9TRVJWRVNfT0RVRlVOQ1RJT04geyAvLyAxLi5uIHRvIDEuLm0KICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBQaHlzaWNhbEFwcGxpYW5jZSB0eXBlLgogICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPRFVGdW5jdGlvbiB0eXBlLiI7CgogICAgbGVhZi1saXN0IHNlcnZlZC1vZHVGdW5jdGlvbiB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJPRFVGdW5jdGlvbiBzZXJ2ZWQgYnkgUGh5c2ljYWxBcHBsaWFuY2UuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1waHlzaWNhbDpQaHlzaWNhbEFwcGxpYW5jZTsgCiAgICB9CgogICAgbGVhZi1saXN0IHNlcnZpbmctcGh5c2ljYWxBcHBsaWFuY2UgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWxBcHBsaWFuY2Ugc2VydmluZyBPRFVGdW5jdGlvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPRFVGdW5jdGlvbjsKICAgIH0KICB9CgogIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxBUFBMSUFOQ0VfU0VSVkVTX09DVUNQRlVOQ1RJT04geyAvLyAxLi5uIHRvIDEuLm0KICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgIGtleSBpZDsKCiAgICBkZXNjcmlwdGlvbiAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBQaHlzaWNhbEFwcGxpYW5jZSB0eXBlLgogICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VDUEZ1bmN0aW9uIHR5cGUuIjsKCiAgICBsZWFmLWxpc3Qgc2VydmVkLW9jdWNwRnVuY3Rpb24gewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiT0NVQ1BGdW5jdGlvbiBzZXJ2ZWQgYnkgUGh5c2ljYWxBcHBsaWFuY2UuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1waHlzaWNhbDpQaHlzaWNhbEFwcGxpYW5jZTsgCiAgICB9CgogICAgbGVhZi1saXN0IHNlcnZpbmctcGh5c2ljYWxBcHBsaWFuY2UgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWxBcHBsaWFuY2Ugc2VydmluZyBPQ1VDUEZ1bmN0aW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVUNQRnVuY3Rpb247CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX1NFUlZFU19PQ1VVUEZVTkNUSU9OIHsgLy8gMS4ubiB0byAxLi5tCiAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICBrZXkgaWQ7CgogICAgZGVzY3JpcHRpb24gIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgUGh5c2ljYWxBcHBsaWFuY2UgdHlwZS4KICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9DVVVQRnVuY3Rpb24gdHlwZS4iOwoKICAgIGxlYWYtbGlzdCBzZXJ2ZWQtb2N1dXBGdW5jdGlvbiB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJPQ1VVUEZ1bmN0aW9uIHNlcnZlZCBieSBQaHlzaWNhbEFwcGxpYW5jZS4iOwogICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXBoeXNpY2FsOlBoeXNpY2FsQXBwbGlhbmNlOyAgCiAgICB9CgogICAgbGVhZi1saXN0IHNlcnZpbmctcGh5c2ljYWxBcHBsaWFuY2UgewogICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWxBcHBsaWFuY2Ugc2VydmluZyBPQ1VVUEZ1bmN0aW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICB9CiAgfQoKICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMQVBQTElBTkNFX1NFUlZFU19ORUFSUlRSSUNGVU5DVElPTiB7IC8vIDEuLm4gdG8gMS4ubQogICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAga2V5IGlkOwoKICAgIGRlc2NyaXB0aW9uICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFBoeXNpY2FsQXBwbGlhbmNlIHR5cGUuCiAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOZWFyUlRSSUNGdW5jdGlvbiB0eXBlLiI7CgogICAgbGVhZi1saXN0IHNlcnZlZC1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJOZWFyUlRSSUNGdW5jdGlvbiBzZXJ2ZWQgYnkgUGh5c2ljYWxBcHBsaWFuY2UuIjsKICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1waHlzaWNhbDpQaHlzaWNhbEFwcGxpYW5jZTsKICAgIH0KCiAgICBsZWFmLWxpc3Qgc2VydmluZy1waHlzaWNhbEFwcGxpYW5jZSB7CiAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbEFwcGxpYW5jZSBzZXJ2aW5nIE5lYXJSVFJJQ0Z1bmN0aW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgfQogIH0KfQ==
 \.
 
 COPY teiv_model.entity_info("storedAt", "name", "moduleReferenceName", "attributeNames") FROM stdin;
@@ -492,6 +717,8 @@ o-ran-smo-teiv-cloud_OCloudSite     OCloudSite      o-ran-smo-teiv-cloud    ["geo-location",
 o-ran-smo-teiv-equipment_AntennaModule AntennaModule   o-ran-smo-teiv-equipment        ["antennaBeamWidth", "antennaModelNumber", "azimuth", "electricalAntennaTilt", "geo-location", "horizontalBeamWidth", "mechanicalAntennaBearing", "mechanicalAntennaTilt", "positionWithinSector", "totalTilt", "verticalBeamWidth"]
 o-ran-smo-teiv-equipment_Site  Site    o-ran-smo-teiv-equipment        ["geo-location", "name"]
 o-ran-smo-teiv-oam_ManagedElement      ManagedElement  o-ran-smo-teiv-oam      []
+o-ran-smo-teiv-physical_PhysicalAppliance      PhysicalAppliance       o-ran-smo-teiv-physical ["modelName", "vendorName"]
+o-ran-smo-teiv-physical_Site   Site    o-ran-smo-teiv-physical ["siteLocation", "siteName"]
 o-ran-smo-teiv-ran_AntennaCapability   AntennaCapability       o-ran-smo-teiv-ran      ["eUtranFqBands", "geranFqBands", "nRFqBands"]
 o-ran-smo-teiv-ran_NRCellCU    NRCellCU        o-ran-smo-teiv-ran      ["cellLocalId", "nCI", "nRTAC", "plmnId"]
 o-ran-smo-teiv-ran_NRCellDU    NRCellDU        o-ran-smo-teiv-ran      ["cellLocalId", "nCI", "nRPCI", "nRTAC"]
@@ -501,6 +728,7 @@ o-ran-smo-teiv-ran_OCUCPFunction    OCUCPFunction   o-ran-smo-teiv-ran      ["gNBCUName",
 o-ran-smo-teiv-ran_OCUUPFunction       OCUUPFunction   o-ran-smo-teiv-ran      ["gNBId", "gNBIdLength", "pLMNIdList"]
 o-ran-smo-teiv-ran_ODUFunction ODUFunction     o-ran-smo-teiv-ran      ["dUpLMNId", "gNBDUId", "gNBId", "gNBIdLength"]
 o-ran-smo-teiv-ran_ORUFunction ORUFunction     o-ran-smo-teiv-ran      ["oruId"]
+o-ran-smo-teiv-ran_SMO SMO     o-ran-smo-teiv-ran      ["smoName"]
 o-ran-smo-teiv-ran_Sector      Sector  o-ran-smo-teiv-ran      ["azimuth", "geo-location", "sectorId"]
 \.
 
@@ -515,6 +743,7 @@ MANAGEDELEMENT_MANAGES_OCUCPFUNCTION        managed-ocucpFunction   ManagedElement  o-ran-
 MANAGEDELEMENT_MANAGES_OCUUPFUNCTION   managed-ocuupFunction   ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       OCUUPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_OCUUPFunction        o-ran-smo-teiv-rel-oam-ran
 MANAGEDELEMENT_MANAGES_ODUFUNCTION     managed-oduFunction     ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-rel-oam-ran
 MANAGEDELEMENT_MANAGES_ORUFUNCTION     managed-oruFunction     ManagedElement  o-ran-smo-teiv-oam      1       1       managed-by-managedElement       ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-rel-oam-ran
+NEARRTRICFUNCTION_O1LINK_SMO   nearRTRICFunction-o1-linked-smo NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-nearRTRICFunction      SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_NearRTRICFunction    o-ran-smo-teiv-ran
 NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE       deployed-on-ocloudNamespace     NFDeployment    o-ran-smo-teiv-cloud    1       9223372036854775807     deployed-nFDeployment   OCloudNamespace o-ran-smo-teiv-cloud    1       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE   o-ran-smo-teiv-cloud
 NFDEPLOYMENT_SERVES_MANAGEDELEMENT     serviced-managedElement NFDeployment    o-ran-smo-teiv-cloud    1       9223372036854775807     serving-nFDeployment    ManagedElement  o-ran-smo-teiv-oam      1       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-cloud_NFDeployment       o-ran-smo-teiv-rel-oam-cloud
 NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION  serviced-nearRTRICFunction      NFDeployment    o-ran-smo-teiv-cloud    0       9223372036854775807     serving-nFDeployment    NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION      o-ran-smo-teiv-rel-cloud-ran
@@ -525,9 +754,28 @@ NODECLUSTER_LOCATED_AT_OCLOUDSITE  located-at-ocloudSite   NodeCluster     o-ran-smo-te
 NRCELLDU_USES_NRSECTORCARRIER  used-nrSectorCarrier    NRCellDU        o-ran-smo-teiv-ran      0       1       used-by-nrCellDu        NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
 NRSECTORCARRIER_USES_ANTENNACAPABILITY used-antennaCapability  NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     used-by-nrSectorCarrier AntennaCapability       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
 OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        deployed-on-nodeCluster OCloudNamespace o-ran-smo-teiv-cloud    1       9223372036854775807     deployed-ocloudNamespace        NodeCluster     o-ran-smo-teiv-cloud    1       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-cloud_OCloudNamespace    o-ran-smo-teiv-cloud
+OCUCPFUNCTION_E1LINK_OCUUPFUNCTION     ocucpFunction-e2-linked-ocuupFunction   OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     ocuupFunction-e2-linked-by-ocucpFunction        OCUUPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPFunction        o-ran-smo-teiv-ran
+OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION ocucpFunction-e2-linked-nearRTRICFunction       OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-ocucpFunction    NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPFunction        o-ran-smo-teiv-ran
+OCUCPFUNCTION_O1LINK_SMO       ocucpFunction-o1-linked-smo     OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-ocucpFunction  SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUCPFunction        o-ran-smo-teiv-ran
 OCUCPFUNCTION_PROVIDES_NRCELLCU        provided-nrCellCu       OCUCPFunction   o-ran-smo-teiv-ran      1       1       provided-by-ocucpFunction       NRCellCU        o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRCellCU     o-ran-smo-teiv-ran
+OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION ocuupFunction-e2-linked-nearRTRICFunction       OCUUPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-ocuupFunction    NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_OCUUPFunction        o-ran-smo-teiv-ran
+ODUFUNCTION_E2LINK_NEARRTRICFUNCTION   oduFunction-e2-linked-nearRTRICFunction ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     nearRTRICFunction-e2-linked-by-oduFunction      NearRTRICFunction       o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_F1CLINK_OCUCPFUNCTION      oduFunction-f1-c-linked-ocucpFunction   ODUFunction     o-ran-smo-teiv-ran      0       1       ocucpFunction-f1-c-linked-by-oduFunction        OCUCPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_F1ULINK_OCUUPFUNCTION      oduFunction-f1-u-linked-ocuupFunction   ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     ocuupFunction-f1-u-linked-by-oduFunction        OCUUPFunction   o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
+ODUFUNCTION_O1LINK_SMO oduFunction-o1-linked-smo       ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-oduFunction    SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ODUFunction  o-ran-smo-teiv-ran
 ODUFUNCTION_PROVIDES_NRCELLDU  provided-nrCellDu       ODUFunction     o-ran-smo-teiv-ran      1       1       provided-by-oduFunction NRCellDU        o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRCellDU     o-ran-smo-teiv-ran
 ODUFUNCTION_PROVIDES_NRSECTORCARRIER   provided-nrSectorCarrier        ODUFunction     o-ran-smo-teiv-ran      1       1       provided-by-oduFunction NRSectorCarrier o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRSectorCarrier      o-ran-smo-teiv-ran
+ORUFUNCTION_O1LINK_SMO oruFunction-o1-linked-smo       ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-o1-linked-by-oruFunction    SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHCLINK_ODUFUNCTION       oruFunction-ofhc-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhc-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHMLINK_ODUFUNCTION       oruFunction-ofhm-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhm-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHMLINK_SMO       oruFunction-ofhm-linked-smo     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     smo-ofhm-linked-by-oruFunction  SMO     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHSLINK_ODUFUNCTION       oruFunction-ofhs-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhs-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+ORUFUNCTION_OFHULINK_ODUFUNCTION       oruFunction-ofhu-linked-oduFunction     ORUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     oduFunction-ofhu-linked-by-oruFunction  ODUFunction     o-ran-smo-teiv-ran      0       1       BI_DIRECTIONAL  false   A_SIDE  o-ran-smo-teiv-ran_ORUFunction  o-ran-smo-teiv-ran
+PHYSICALAPPLIANCE_INSTALLEDAT_SITE     installing-site PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     installed-physicalAppliance     Site    o-ran-smo-teiv-physical 0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE      o-ran-smo-teiv-physical
+PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION     served-nearRTRICFunction        PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       NearRTRICFunction       o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_NEARRTRICFUNCTION      o-ran-smo-teiv-rel-physical-ran
+PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION served-ocucpFunction    PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       OCUCPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUCPFUNCTION  o-ran-smo-teiv-rel-physical-ran
+PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION served-ocuupFunction    PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       OCUUPFunction   o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_OCUUPFUNCTION  o-ran-smo-teiv-rel-physical-ran
+PHYSICALAPPLIANCE_SERVES_ODUFUNCTION   served-oduFunction      PhysicalAppliance       o-ran-smo-teiv-physical 0       9223372036854775807     serving-physicalAppliance       ODUFunction     o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   RELATION        o-ran-smo-teiv-rel-physical-ran_PHYSICALAPPLIANCE_SERVES_ODUFUNCTION    o-ran-smo-teiv-rel-physical-ran
 SECTOR_GROUPS_ANTENNAMODULE    grouped-antennaModule   Sector  o-ran-smo-teiv-ran      0       1       grouped-by-sector       AntennaModule   o-ran-smo-teiv-equipment        0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-equipment_AntennaModule  o-ran-smo-teiv-rel-equipment-ran
 SECTOR_GROUPS_NRCELLDU grouped-nrCellDu        Sector  o-ran-smo-teiv-ran      0       1       grouped-by-sector       NRCellDU        o-ran-smo-teiv-ran      0       9223372036854775807     BI_DIRECTIONAL  false   B_SIDE  o-ran-smo-teiv-ran_NRCellDU     o-ran-smo-teiv-ran
 \.
index adb4790..4fb1fd8 100644 (file)
@@ -1,7 +1,7 @@
 --
 -- ============LICENSE_START=======================================================
 -- Copyright (C) 2024 Ericsson
--- Modifications Copyright (C) 2024-2025 OpenInfra Foundation Europe
+-- Modifications Copyright (C) 2024 OpenInfra Foundation Europe
 -- ================================================================================
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.
@@ -92,6 +92,54 @@ ALTER TABLE ONLY teiv_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" ALTER COLU
 
 ALTER TABLE ONLY teiv_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
+CREATE TABLE IF NOT EXISTS teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" (
+       "id"                    TEXT,
+       "aSide_PhysicalAppliance"                       TEXT,
+       "bSide_ODUFunction"                     TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" (
+       "id"                    TEXT,
+       "aSide_PhysicalAppliance"                       TEXT,
+       "bSide_OCUCPFunction"                   TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" (
+       "id"                    TEXT,
+       "aSide_PhysicalAppliance"                       TEXT,
+       "bSide_OCUUPFunction"                   TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" (
        "id"                    TEXT,
        "aSide_AntennaModule"                   TEXT,
@@ -108,6 +156,22 @@ ALTER TABLE ONLY teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" ALTER COLU
 
 ALTER TABLE ONLY teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
+CREATE TABLE IF NOT EXISTS teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" (
+       "id"                    TEXT,
+       "aSide_PhysicalAppliance"                       TEXT,
+       "bSide_NearRTRICFunction"                       TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-cloud_CloudifiedNF" (
        "id"                    TEXT,
        "name"                  TEXT,
@@ -343,6 +407,54 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-oam_ManagedElement" ALTER COLUMN "REL
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-oam_ManagedElement" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" SET DEFAULT '{}';
 
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" (
+       "id"                    TEXT,
+       "aSide_PhysicalAppliance"                       TEXT,
+       "bSide_Site"                    TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" (
+       "id"                    TEXT,
+       "modelName"                     TEXT,
+       "vendorName"                    TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-physical_Site" (
+       "id"                    TEXT,
+       "siteLocation"                  jsonb,
+       "siteName"                      TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_Site" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_Site" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-physical_Site" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_AntennaCapability" (
        "id"                    TEXT,
        "eUtranFqBands"                 jsonb,
@@ -500,7 +612,13 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                     jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                   jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                    jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                 jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION"                 jsonb,
+       "REL_FK_nearRTRICFunction-o1-linked-smo"                        TEXT,
+       "REL_ID_NEARRTRICFUNCTION_O1LINK_SMO"                   TEXT,
+       "REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO"                 jsonb,
+       "REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO"                        jsonb,
+       "REL_metadata_NEARRTRICFUNCTION_O1LINK_SMO"                     jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -515,6 +633,12 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" (
        "id"                    TEXT,
        "gNBCUName"                     TEXT,
@@ -530,7 +654,25 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                 jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                       jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                        jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                     jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION"                     jsonb,
+       "REL_FK_ocucpFunction-e2-linked-ocuupFunction"                  TEXT,
+       "REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                     TEXT,
+       "REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                   jsonb,
+       "REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                 jsonb,
+       "REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                  jsonb,
+       "REL_metadata_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"                       jsonb,
+       "REL_FK_ocucpFunction-e2-linked-nearRTRICFunction"                      TEXT,
+       "REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                 TEXT,
+       "REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                      jsonb,
+       "REL_metadata_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"                   jsonb,
+       "REL_FK_ocucpFunction-o1-linked-smo"                    TEXT,
+       "REL_ID_OCUCPFUNCTION_O1LINK_SMO"                       TEXT,
+       "REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO"                   jsonb,
+       "REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO"                    jsonb,
+       "REL_metadata_OCUCPFUNCTION_O1LINK_SMO"                 jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -545,6 +687,24 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" (
        "id"                    TEXT,
        "gNBId"                 BIGINT,
@@ -559,7 +719,13 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                 jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                       jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                        jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                     jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION"                     jsonb,
+       "REL_FK_ocuupFunction-e2-linked-nearRTRICFunction"                      TEXT,
+       "REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                 TEXT,
+       "REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                      jsonb,
+       "REL_metadata_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"                   jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -574,6 +740,12 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ODUFunction" (
        "id"                    TEXT,
        "dUpLMNId"                      jsonb,
@@ -589,7 +761,31 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ODUFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                   jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                 jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                  jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                       jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION"                       jsonb,
+       "REL_FK_oduFunction-e2-linked-nearRTRICFunction"                        TEXT,
+       "REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                   TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                 jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                       jsonb,
+       "REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                        jsonb,
+       "REL_metadata_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"                     jsonb,
+       "REL_FK_oduFunction-f1-c-linked-ocucpFunction"                  TEXT,
+       "REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                      TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                    jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                  jsonb,
+       "REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                   jsonb,
+       "REL_metadata_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"                        jsonb,
+       "REL_FK_oduFunction-f1-u-linked-ocuupFunction"                  TEXT,
+       "REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                      TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                    jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                  jsonb,
+       "REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                   jsonb,
+       "REL_metadata_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"                        jsonb,
+       "REL_FK_oduFunction-o1-linked-smo"                      TEXT,
+       "REL_ID_ODUFUNCTION_O1LINK_SMO"                 TEXT,
+       "REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_decorators_ODUFUNCTION_O1LINK_SMO"                      jsonb,
+       "REL_metadata_ODUFUNCTION_O1LINK_SMO"                   jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -604,6 +800,30 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "REL_CD_decorators_ODUFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ORUFunction" (
        "id"                    TEXT,
        "oruId"                 BIGINT,
@@ -616,7 +836,43 @@ CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_ORUFunction" (
        "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                   jsonb,
        "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                 jsonb,
        "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                  jsonb,
-       "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                       jsonb
+       "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION"                       jsonb,
+       "REL_FK_oruFunction-o1-linked-smo"                      TEXT,
+       "REL_ID_ORUFUNCTION_O1LINK_SMO"                 TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO"                       jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO"                     jsonb,
+       "REL_CD_decorators_ORUFUNCTION_O1LINK_SMO"                      jsonb,
+       "REL_metadata_ORUFUNCTION_O1LINK_SMO"                   jsonb,
+       "REL_FK_oruFunction-ofhc-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHCLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhm-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHMLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhm-linked-smo"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHMLINK_SMO"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHMLINK_SMO"                 jsonb,
+       "REL_FK_oruFunction-ofhs-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHSLINK_ODUFUNCTION"                 jsonb,
+       "REL_FK_oruFunction-ofhu-linked-oduFunction"                    TEXT,
+       "REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION"                       TEXT,
+       "REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION"                     jsonb,
+       "REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION"                   jsonb,
+       "REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION"                    jsonb,
+       "REL_metadata_ORUFUNCTION_OFHULINK_ODUFUNCTION"                 jsonb
 );
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -631,6 +887,57 @@ ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD
 
 ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION" SET DEFAULT '{}';
 
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_O1LINK_SMO" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION" SET DEFAULT '{}';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION" SET DEFAULT '{}';
+
+CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_SMO" (
+       "id"                    TEXT,
+       "smoName"                       TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "metadata"                      jsonb
+);
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY teiv_data."o-ran-smo-teiv-ran_SMO" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS teiv_data."o-ran-smo-teiv-ran_Sector" (
        "id"                    TEXT,
        "azimuth"                       DECIMAL,
@@ -718,12 +1025,36 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" ADD CONSTRAINT "PK_82A1C5618438FF6DF7CDD48FD71E0A584E6D052A" PRIMARY KEY ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       '5A1D611A68E4A8B2F007A89876701DB3FA88346E',
+ 'PK_6C410FD0F9E98168BA2B4F63C967F3C10E8F8AC9',
+ 'ALTER TABLE teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" ADD CONSTRAINT "PK_6C410FD0F9E98168BA2B4F63C967F3C10E8F8AC9" PRIMARY KEY ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA',
+ 'PK_84398955EE4737F32AB94B09BB68E6F48ECE707E',
+ 'ALTER TABLE teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" ADD CONSTRAINT "PK_84398955EE4737F32AB94B09BB68E6F48ECE707E" PRIMARY KEY ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'B83D20388E54C581319034D29C555DE6F8D938FF',
+ 'PK_0D7B04E5B3AD0DB04FBD8FC00598BEEE04BD3E75',
+ 'ALTER TABLE teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" ADD CONSTRAINT "PK_0D7B04E5B3AD0DB04FBD8FC00598BEEE04BD3E75" PRIMARY KEY ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'CFC235E0404703D1E4454647DF8AAE2C193DB402',
  'PK_63E61CB6802F21FE7A04A80A095F6AF8ABF067CE',
  'ALTER TABLE teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" ADD CONSTRAINT "PK_63E61CB6802F21FE7A04A80A095F6AF8ABF067CE" PRIMARY KEY ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'D4A45C271462B28FB655CFCF2F2D826236C78062',
+ 'PK_6E80C7AFF8B1C6C89ECCA6A855DC3B31066318AD',
+ 'ALTER TABLE teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" ADD CONSTRAINT "PK_6E80C7AFF8B1C6C89ECCA6A855DC3B31066318AD" PRIMARY KEY ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-cloud_CloudifiedNF',
  'PK_o-ran-smo-teiv-cloud_CloudifiedNF_id',
@@ -784,6 +1115,24 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-oam_ManagedElement" ADD CONSTRAINT "PK_o-ran-smo-teiv-oam_ManagedElement_id" PRIMARY KEY ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE',
+ 'PK_38CC59EE4BB930940AA47257E64BA5E4BBFEF260',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ADD CONSTRAINT "PK_38CC59EE4BB930940AA47257E64BA5E4BBFEF260" PRIMARY KEY ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-physical_PhysicalAppliance',
+ 'PK_o-ran-smo-teiv-physical_PhysicalAppliance_id',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ADD CONSTRAINT "PK_o-ran-smo-teiv-physical_PhysicalAppliance_id" PRIMARY KEY ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-physical_Site',
+ 'PK_o-ran-smo-teiv-physical_Site_id',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-physical_Site" ADD CONSTRAINT "PK_o-ran-smo-teiv-physical_Site_id" PRIMARY KEY ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_AntennaCapability',
  'PK_o-ran-smo-teiv-ran_AntennaCapability_id',
@@ -838,6 +1187,12 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "PK_o-ran-smo-teiv-ran_ORUFunction_id" PRIMARY KEY ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_SMO',
+ 'PK_o-ran-smo-teiv-ran_SMO_id',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_SMO" ADD CONSTRAINT "PK_o-ran-smo-teiv-ran_SMO_id" PRIMARY KEY ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_Sector',
  'PK_o-ran-smo-teiv-ran_Sector_id',
@@ -880,6 +1235,42 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" ADD CONSTRAINT "FK_CCC0DEA6E4ABAB8614332070E83D953254D5A3A5" FOREIGN KEY ("bSide_NearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       '5A1D611A68E4A8B2F007A89876701DB3FA88346E',
+ 'FK_77018C1186D1BDFFA579BB0AFF4616B44E5D2869',
+ 'ALTER TABLE teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" ADD CONSTRAINT "FK_77018C1186D1BDFFA579BB0AFF4616B44E5D2869" FOREIGN KEY ("aSide_PhysicalAppliance") REFERENCES teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       '5A1D611A68E4A8B2F007A89876701DB3FA88346E',
+ 'FK_8D4427BBC6A11AB138377367A3854C0B3F8617BA',
+ 'ALTER TABLE teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" ADD CONSTRAINT "FK_8D4427BBC6A11AB138377367A3854C0B3F8617BA" FOREIGN KEY ("bSide_ODUFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA',
+ 'FK_24136D3737CD1512DCEF8A40E1755B72EC0A2CD4',
+ 'ALTER TABLE teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" ADD CONSTRAINT "FK_24136D3737CD1512DCEF8A40E1755B72EC0A2CD4" FOREIGN KEY ("aSide_PhysicalAppliance") REFERENCES teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA',
+ 'FK_7026E52E2D490BEB55AECB31A1E8EFE10A492AA3',
+ 'ALTER TABLE teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" ADD CONSTRAINT "FK_7026E52E2D490BEB55AECB31A1E8EFE10A492AA3" FOREIGN KEY ("bSide_OCUCPFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'B83D20388E54C581319034D29C555DE6F8D938FF',
+ 'FK_E1B88CD983257BA0928134B10E59DD3CC819849A',
+ 'ALTER TABLE teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" ADD CONSTRAINT "FK_E1B88CD983257BA0928134B10E59DD3CC819849A" FOREIGN KEY ("aSide_PhysicalAppliance") REFERENCES teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'B83D20388E54C581319034D29C555DE6F8D938FF',
+ 'FK_609F0EE7138FEC84D27F37B2C9E0C428DD2BFF54',
+ 'ALTER TABLE teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" ADD CONSTRAINT "FK_609F0EE7138FEC84D27F37B2C9E0C428DD2BFF54" FOREIGN KEY ("bSide_OCUUPFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'CFC235E0404703D1E4454647DF8AAE2C193DB402',
  'FK_D80D1E6B26DF620B4DE659C600A3B7F709A41960',
@@ -892,6 +1283,18 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" ADD CONSTRAINT "FK_7148BEED02C0617DE1DEEB6639F34A9FA9251B06" FOREIGN KEY ("bSide_AntennaCapability") REFERENCES teiv_data."o-ran-smo-teiv-ran_AntennaCapability" ("id");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'D4A45C271462B28FB655CFCF2F2D826236C78062',
+ 'FK_377503D2B43273E3FC49BB0247CD3AB487BDDDD4',
+ 'ALTER TABLE teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" ADD CONSTRAINT "FK_377503D2B43273E3FC49BB0247CD3AB487BDDDD4" FOREIGN KEY ("aSide_PhysicalAppliance") REFERENCES teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'D4A45C271462B28FB655CFCF2F2D826236C78062',
+ 'FK_D65A8BCA9956E1F8D3F395B69A28E023863656B8',
+ 'ALTER TABLE teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" ADD CONSTRAINT "FK_D65A8BCA9956E1F8D3F395B69A28E023863656B8" FOREIGN KEY ("bSide_NearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE',
  'FK_A08D274894ECB6799E56C2089A494AF0345B9B16',
@@ -988,6 +1391,18 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-oam_ManagedElement" ADD CONSTRAINT "UNIQUE_EC9B35192A31C6491E6566602720D1C26E3CB708" UNIQUE ("REL_ID_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE',
+ 'FK_0C307FF7FE1210B6696BF0BD533D43BCF20D5CEB',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ADD CONSTRAINT "FK_0C307FF7FE1210B6696BF0BD533D43BCF20D5CEB" FOREIGN KEY ("aSide_PhysicalAppliance") REFERENCES teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE',
+ 'FK_724766DCE4C384828DFFDA92F96D3CF41A10AC60',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" ADD CONSTRAINT "FK_724766DCE4C384828DFFDA92F96D3CF41A10AC60" FOREIGN KEY ("bSide_Site") REFERENCES teiv_data."o-ran-smo-teiv-physical_Site" ("id");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_NRCellCU',
  'FK_o-ran-smo-teiv-ran_NRCellCU_REL_FK_provided-by-ocucpFunction',
@@ -1072,6 +1487,18 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "UNIQUE_E020461673334EB824643649B6B31670FB064EC8" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_NearRTRICFunction',
+ 'FK_38EF935E0C374C18F1865F231A3EA230FD743A91',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "FK_38EF935E0C374C18F1865F231A3EA230FD743A91" FOREIGN KEY ("REL_FK_nearRTRICFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_NearRTRICFunction',
+ 'UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ADD CONSTRAINT "UNIQUE_7F0B99D35476B0D3DB489400BA4456E1A31D24E0" UNIQUE ("REL_ID_NEARRTRICFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_OCUCPFunction',
  'FK_122DD9709032528D161177B3624AD7AAF6589005',
@@ -1084,6 +1511,42 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_2B7D3D49C1072E660047DE56843413CE628BF94A" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'FK_03B281BB0D7DB0CBC38DA02B76F4C5E8664040F0',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "FK_03B281BB0D7DB0CBC38DA02B76F4C5E8664040F0" FOREIGN KEY ("REL_FK_ocucpFunction-e2-linked-ocuupFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'UNIQUE_FB6281E267F316F3D288BFEF96319FFD5FF2E9CF',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_FB6281E267F316F3D288BFEF96319FFD5FF2E9CF" UNIQUE ("REL_ID_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'FK_92C27CC7666DB694835211BBAB9639C4FECAA639',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "FK_92C27CC7666DB694835211BBAB9639C4FECAA639" FOREIGN KEY ("REL_FK_ocucpFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'UNIQUE_636E8949BC041514E4F592F7B65FC701773C6067',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_636E8949BC041514E4F592F7B65FC701773C6067" UNIQUE ("REL_ID_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "FK_E31B73DB925367F14AEC0DA6EBD7C9BAD8C7A275" FOREIGN KEY ("REL_FK_ocucpFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUCPFunction',
+ 'UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ADD CONSTRAINT "UNIQUE_368AE553B3A5941070CAB09A7864BA7E9E08087B" UNIQUE ("REL_ID_OCUCPFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_OCUUPFunction',
  'FK_8062AF50E5EE5543FBCC68D66FDFF673E31E081D',
@@ -1096,6 +1559,18 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ADD CONSTRAINT "UNIQUE_DF85FE7809B5527CB4A6028DD1A599DBBD5AF214" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUUPFunction',
+ 'FK_E8131DF616156B9C91CA7C5A68AE261FA00A89BA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ADD CONSTRAINT "FK_E8131DF616156B9C91CA7C5A68AE261FA00A89BA" FOREIGN KEY ("REL_FK_ocuupFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_OCUUPFunction',
+ 'UNIQUE_90EB740B5632402F115555B7387BC0A218B9A19F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ADD CONSTRAINT "UNIQUE_90EB740B5632402F115555B7387BC0A218B9A19F" UNIQUE ("REL_ID_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_ODUFunction',
  'FK_B6F0A4F9024FB47DA39C9A4F1DFFF78330222A80',
@@ -1108,6 +1583,54 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_D570291C9E28A2AF73387B7A8B0F4C70130EEDB4" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_24F4D92B40E989ED842E75CBCDA1CFC16424FE87" FOREIGN KEY ("REL_FK_oduFunction-e2-linked-nearRTRICFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_F504808C587D183EA569C353BDCB7923AB1DDFE9" UNIQUE ("REL_ID_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_8BC456F756C1DA4C4D8571A9A39030157AECD1DE" FOREIGN KEY ("REL_FK_oduFunction-f1-c-linked-ocucpFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_B3D6249002011DDAB474A440BEA6BDF00E1391CB" UNIQUE ("REL_ID_ODUFUNCTION_F1CLINK_OCUCPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_C3185BEF15112E48700CBF1DB10FF50140F98DE7" FOREIGN KEY ("REL_FK_oduFunction-f1-u-linked-ocuupFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_6CEC3CBD56C1EBB3972859FCF3847DBA01D943A5" UNIQUE ("REL_ID_ODUFUNCTION_F1ULINK_OCUUPFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "FK_629FF74123AF5F3D71FA78130DB028D84FC5B48F" FOREIGN KEY ("REL_FK_oduFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ODUFunction',
+ 'UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ODUFunction" ADD CONSTRAINT "UNIQUE_C95D4C8AC64C4CAF8BC4E10E54B5660E3B2EB82E" UNIQUE ("REL_ID_ODUFUNCTION_O1LINK_SMO");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-ran_ORUFunction',
  'FK_B497A8C3DC2D647938E6DB4C7E691509DD8C90DE',
@@ -1120,6 +1643,78 @@ SELECT teiv_data.create_constraint_if_not_exists(
  'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_4E6F008B82605A806EED04B2315A1FEE095A9241" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION");'
 );
 
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_DBE4275001B5740ED355F64F62F181489A4E398A',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_DBE4275001B5740ED355F64F62F181489A4E398A" FOREIGN KEY ("REL_FK_oruFunction-o1-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_0FA79727AA200AB090C512DD295B96D44660D5DA" UNIQUE ("REL_ID_ORUFUNCTION_O1LINK_SMO");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_09032C749AEA4F56C53BB96DDB5B0FC46F586333" FOREIGN KEY ("REL_FK_oruFunction-ofhc-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_AEAE9E71A4B9E40CABD1B03DE399873A593C232F" UNIQUE ("REL_ID_ORUFUNCTION_OFHCLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_7AF8E8A967D49CB387EE6804300D70FE35111A3B" FOREIGN KEY ("REL_FK_oruFunction-ofhm-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_D08B266B3B0AF66E6EA629340B0D46C31E88B73F" UNIQUE ("REL_ID_ORUFUNCTION_OFHMLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_ACF604FA62A9B913BC1320824BF6D2E9766634DA" FOREIGN KEY ("REL_FK_oruFunction-ofhm-linked-smo") REFERENCES teiv_data."o-ran-smo-teiv-ran_SMO" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_9967840981340189977B88AA138C3773F21122C7',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_9967840981340189977B88AA138C3773F21122C7" UNIQUE ("REL_ID_ORUFUNCTION_OFHMLINK_SMO");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_2C3BB8ACA6BF4139102F14195012F211A1AB96CB" FOREIGN KEY ("REL_FK_oruFunction-ofhs-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_5CE3164003E7D1563EDF49E03067A4BEF651739A" UNIQUE ("REL_ID_ORUFUNCTION_OFHSLINK_ODUFUNCTION");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "FK_A07203CE9F3A264F2C5A8A293745D8C6F715D266" FOREIGN KEY ("REL_FK_oruFunction-ofhu-linked-oduFunction") REFERENCES teiv_data."o-ran-smo-teiv-ran_ODUFunction" ("id");'
+);
+
+SELECT teiv_data.create_constraint_if_not_exists(
+       'o-ran-smo-teiv-ran_ORUFunction',
+ 'UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D',
+ 'ALTER TABLE teiv_data."o-ran-smo-teiv-ran_ORUFunction" ADD CONSTRAINT "UNIQUE_AD5917CB1185E13CA09C58CC4E0D1974218C9E4D" UNIQUE ("REL_ID_ORUFUNCTION_OFHULINK_ODUFUNCTION");'
+);
+
 SELECT teiv_data.create_constraint_if_not_exists(
        'o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION',
  'FK_2B4B09AF7CC9C877B1140BB127B4CB4DA438195D',
@@ -1174,12 +1769,36 @@ CREATE INDEX IF NOT EXISTS "IDX_F52FEEDBAF1B04D2D22EBAE051BB5125DF6A6968" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_D333FA5882890B7CD3599712FFFB2641B9E04C80" ON teiv_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" USING GIN ("CD_decorators");
 
+CREATE INDEX IF NOT EXISTS "IDX_24AACA66F5AFB5E40FE93C3638C789D4D2A8F063" ON teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_09295ADACB3D204E56C3917CB88E63FA186055A7" ON teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_CBF202818AE6FB3A69C44CC7572BD63D284B1AF6" ON teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E" USING GIN ("CD_decorators");
+
+CREATE INDEX IF NOT EXISTS "IDX_48546E24CFF2A489CA783C3D9E91AE5BF267F44E" ON teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_99049D602D6E4A25F14898B4E7F97479C42D61C4" ON teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_D11AD33EEC5B056675B950E3A1982AF2CD56EDEC" ON teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA" USING GIN ("CD_decorators");
+
+CREATE INDEX IF NOT EXISTS "IDX_A79F66153A0C78659F90CAF80147401312B1D3E6" ON teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_BD4B6C32900972AA69A3E28241BE923C9A2C4C2B" ON teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_392C4E8EFF5A261C6FC2EADBCD2566B1BDD9484D" ON teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF" USING GIN ("CD_decorators");
+
 CREATE INDEX IF NOT EXISTS "IDX_E896A9EB22A3F9F96CE75A271475316A98B629C8" ON teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_DD0D676834B12CA2F7E8219310998376A08D7F5F" ON teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_7BF09D0227840279556AD27ACECB068705893D28" ON teiv_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" USING GIN ("CD_decorators");
 
+CREATE INDEX IF NOT EXISTS "IDX_CF2AE01363E39CE4B5541047403F5354AA36E30E" ON teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_0D8159380FCF878593989891969AD9DCF3A75A28" ON teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_1FAB22E8654FEFF5EAC13C58CEA0CCADEBECD4FF" ON teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062" USING GIN ("CD_decorators");
+
 CREATE INDEX IF NOT EXISTS "IDX_9EDB5C47201FC82A4565BFED9EF369D6C6529B19" ON teiv_data."o-ran-smo-teiv-cloud_CloudifiedNF" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_BD96130868B69147B2F87B0D15F5829690DEF454" ON teiv_data."o-ran-smo-teiv-cloud_CloudifiedNF" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1278,6 +1897,26 @@ CREATE INDEX IF NOT EXISTS "IDX_634619CF7333EBC0AFDE990900B79220FC626EBA" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_F15A070FC83B2E49223B4232E0BEB8931C2B7A4C" ON teiv_data."o-ran-smo-teiv-oam_ManagedElement" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF");
 
+CREATE INDEX IF NOT EXISTS "IDX_9159E48882E10BD6AD511721D591EABE231A0C16" ON teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_4A8DA56C1989C762E2026427F92B787B11632C30" ON teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_4CFE6D1BF80F10055EEF778827B1B769EB9FBFE7" ON teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE" USING GIN ("CD_decorators");
+
+CREATE INDEX IF NOT EXISTS "IDX_CD60BBA5629EE3D5882EE9907BAB87E9E18BF2A4" ON teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_1D52205C41F3233591749A18B5ED604A4A6B5144" ON teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-physical_PhysicalAppliance_CD_decorators" ON teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance" USING GIN ("CD_decorators");
+
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-physical_Site_siteLocation" ON teiv_data."o-ran-smo-teiv-physical_Site" USING GIN ("siteLocation");
+
+CREATE INDEX IF NOT EXISTS "IDX_555DE28C10DDDB6CB6AB619D5C71E93068D432FB" ON teiv_data."o-ran-smo-teiv-physical_Site" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_DCA080CB1439BEFA5461FD03A76033285B9A8EA2" ON teiv_data."o-ran-smo-teiv-physical_Site" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-physical_Site_CD_decorators" ON teiv_data."o-ran-smo-teiv-physical_Site" USING GIN ("CD_decorators");
+
 CREATE INDEX IF NOT EXISTS "IDX_5FB80647AE3E5C0443A792618D65B9090EE2A3FC" ON teiv_data."o-ran-smo-teiv-ran_AntennaCapability" USING GIN (("eUtranFqBands"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_A94722FF7B95D8974B494793908B57B4E1A9743B" ON teiv_data."o-ran-smo-teiv-ran_AntennaCapability" USING GIN (("geranFqBands"::TEXT) gin_trgm_ops);
@@ -1360,6 +1999,12 @@ CREATE INDEX IF NOT EXISTS "IDX_0ECC814A408874C9F8E73EEE3968984A6345A606" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_B10FD045A6C3E169953CCC38CC2D801FCE15A75F" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_6B3AF742DAE59FE0E798E67C7E2417783464FD8D" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN (("REL_CD_sourceIds_NEARRTRICFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F2F838B3DBDF4E0EFC3FC2096F7549740976B346" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN (("REL_CD_classifiers_NEARRTRICFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_218EB3FA277F4E7F72EC345841246A5BB3402E28" ON teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction" USING GIN ("REL_CD_decorators_NEARRTRICFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_OCUCPFunction_pLMNId" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("pLMNId");
 
 CREATE INDEX IF NOT EXISTS "IDX_84A29F8571860AC5A7BD1A99923485ECB6A3939D" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1374,6 +2019,24 @@ CREATE INDEX IF NOT EXISTS "IDX_21F2560C8330A795E8AFB54C6D31CDCF6CCD3070" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_D856E84F300B6711E81931AE1CBC8AD905FA384F" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_13597F9B767DD22A86305D13FF5B050BFE06B14D" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_sourceIds_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_4D7E42AC9DF388919712322B7C0169A370E56ADF" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_classifiers_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_7F7A8AE3E6B3F57A5D1273A1243A79CABA4753C0" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_OCUCPFUNCTION_E1LINK_OCUUPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_48341F480087D5BD4C2A19DCA0083184B7178A43" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_sourceIds_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_090E0962B4064F2ECF7C3256325BF2A30BCE85B8" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_classifiers_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_C470E73FA66AEA37FBC2C25AEFB2B959BEA0FBB2" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_OCUCPFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_2F4FCB18A717B38224F5BAA484D2EFE26A458CC7" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_sourceIds_OCUCPFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_D9ADFBBC5360F5D511E0E67A0D13622A4BBD78E1" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN (("REL_CD_classifiers_OCUCPFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_FC018070572BA39A4683CBDDCAAA16D3A9129DB8" ON teiv_data."o-ran-smo-teiv-ran_OCUCPFunction" USING GIN ("REL_CD_decorators_OCUCPFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_9122DAA7A60DB585BE5ECA68A2EDB9ABF1E7156A" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("pLMNIdList"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_6C81B2BBFCFE94C87598869A2099E04571202BA7" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1388,6 +2051,12 @@ CREATE INDEX IF NOT EXISTS "IDX_3346DFB8C2B7D6EEA12B7C1DE4A84B058C24A657" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_ADD3393C27589066C4993A3491436C6FB57A539F" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_7B8C47A1FD2FCA75DED85825317147EE0831A1C7" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("REL_CD_sourceIds_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_5E92F3864ACD360810BD006484337B25B5C64004" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN (("REL_CD_classifiers_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_CEFE5F65D4553C67E4494FCDE9E0E44549171577" ON teiv_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN ("REL_CD_decorators_OCUUPFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
 CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("dUpLMNId");
 
 CREATE INDEX IF NOT EXISTS "IDX_73790DA8FF6365B752DC8B399893AC6DE8CF26C4" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
@@ -1402,6 +2071,30 @@ CREATE INDEX IF NOT EXISTS "IDX_5DD192861541E0EB2776C6BFE34B327FF27F93C3" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_5F2DC68F0CE9A176F79C9DEF6752556C38C7A8DF" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_AFD9E48ECC8E81DCD5F3A10199B7936A894D75F1" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_714284D19884BC9E2A594B6B5010D429E12F5AE7" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_E2LINK_NEARRTRICFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_4C7915C1CD9395FE91ED0474B1235393063920BA" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F784968DE38F941EB1D9E2845576B5F93ED1E18B" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_F1CLINK_OCUCPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_9A1D505BA4542318211ECF2569A0CEA390AAB52D" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_F1CLINK_OCUCPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_0C48537C4C2C125C6B188375EC62CBA0984B3D8B" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_91CC0F89EAA44A400D822FCFDC9AB8AE0285499C" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_F1ULINK_OCUUPFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_090DF573B5D8AFDA2478C3B4BA551FEC2CD48585" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_F1ULINK_OCUUPFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_F8F72994228550E6DA79A2E336AFF745CF5B13A8" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_sourceIds_ODUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_166E643CA7B58B57DC9CA292E233C033DA771649" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("REL_CD_classifiers_ODUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_0A7B8671FF4C6943209D81A0351DE1CAEFB55629" ON teiv_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("REL_CD_decorators_ODUFUNCTION_O1LINK_SMO");
+
 CREATE INDEX IF NOT EXISTS "IDX_D0D11CFAA917F4FA12748A041A34D2B39A3AD707" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_2A5AAAD13FDCFF7F2958005C22937366F6604A0D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1414,6 +2107,48 @@ CREATE INDEX IF NOT EXISTS "IDX_DA79A3F946C1F4E8D05B4D6ADEF5E4C65E47635E" ON tei
 
 CREATE INDEX IF NOT EXISTS "IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION");
 
+CREATE INDEX IF NOT EXISTS "IDX_C650BB0BAF5EF02FB2A7CBF9D89379DB446443F3" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_583EAFCC8FB5174AB69184076C2EC75E85F44402" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_O1LINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_DE327F0FC00996B5856EE87C424E2E70C39475CA" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_O1LINK_SMO");
+
+CREATE INDEX IF NOT EXISTS "IDX_DEC190D478DCFE7B4974DFE067136180DC4F98D2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHCLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_913D348FC7569F1B3054A7F11583A8E826C44C4D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHCLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_2C350ECD1561367CFE3C6ECE240110B0CFBE691E" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHCLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_70B09AD99FFFEC82C50E21709F65D759CD306CC2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_10F981F841A1BEAC998725703500D2AAFF92C615" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHMLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_091099E01E22A69CF5FBD13F6BE31A590A12DFEB" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHMLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_8D607F7CBEE96E7D2F0D0E2399E1DF2D4A4D2DE1" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHMLINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_C5EF805B2EF19761349A03D3CD3CF6C12818C98B" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHMLINK_SMO"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_0F1592A3DE78629D65D3FED257905832BF2C42EA" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHMLINK_SMO");
+
+CREATE INDEX IF NOT EXISTS "IDX_1EF8E086BAB9488EA6AD191B6082977A76CD2BD9" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHSLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_2E9527C8D166D7A31FE2F2B26EEED8202FC33B14" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHSLINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_21586E874FC18901720393534E189FB50B0825AC" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHSLINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_544CBFFD146034E3AA9C2EAF6B8770C8CF8740DF" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_sourceIds_ORUFUNCTION_OFHULINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_7B224280C4E1CD6248628CAF23CB06FE50AA838D" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN (("REL_CD_classifiers_ORUFUNCTION_OFHULINK_ODUFUNCTION"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F3DE945424D3435D889B06D0080CFC8C26F76CF2" ON teiv_data."o-ran-smo-teiv-ran_ORUFunction" USING GIN ("REL_CD_decorators_ORUFUNCTION_OFHULINK_ODUFUNCTION");
+
+CREATE INDEX IF NOT EXISTS "IDX_F34E4B2CD5D3DEC7271D5FA89AFC34BCF424D636" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_E528335C63DF74D690BADBF0ED2134E2BE5EC147" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_SMO_CD_decorators" ON teiv_data."o-ran-smo-teiv-ran_SMO" USING GIN ("CD_decorators");
+
 CREATE INDEX IF NOT EXISTS "IDX_E234B43A7CD7843672F08F2197AB46A2A50BECB0" ON teiv_data."o-ran-smo-teiv-ran_Sector" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
 
 CREATE INDEX IF NOT EXISTS "IDX_19C19556F9714850389595E0A16218FA229205FE" ON teiv_data."o-ran-smo-teiv-ran_Sector" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1452,10 +2187,16 @@ ANALYZE teiv_data."o-ran-smo-teiv-equipment_Site";
 
 ANALYZE teiv_data."o-ran-smo-teiv-cloud_NODECLUSTER_LOCATED_AT_OCLOUDSITE";
 
+ANALYZE teiv_data."o-ran-smo-teiv-physical_Site";
+
 ANALYZE teiv_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION";
 
 ANALYZE teiv_data."o-ran-smo-teiv-cloud_NodeCluster";
 
+ANALYZE teiv_data."o-ran-smo-teiv-physical_PHYSICALAPPLIANCE_INSTALLEDAT_SITE";
+
+ANALYZE teiv_data."AB1CE982C9BF5EE9B415206AD49C6A73584CA5BA";
+
 ANALYZE teiv_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION";
 
 ANALYZE teiv_data."o-ran-smo-teiv-ran_OCUCPFunction";
@@ -1466,20 +2207,30 @@ ANALYZE teiv_data."o-ran-smo-teiv-ran_NRCellDU";
 
 ANALYZE teiv_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU";
 
+ANALYZE teiv_data."o-ran-smo-teiv-ran_SMO";
+
 ANALYZE teiv_data."o-ran-smo-teiv-ran_NearRTRICFunction";
 
 ANALYZE teiv_data."o-ran-smo-teiv-cloud_CloudifiedNF";
 
 ANALYZE teiv_data."o-ran-smo-teiv-cloud_NFDeployment";
 
+ANALYZE teiv_data."o-ran-smo-teiv-physical_PhysicalAppliance";
+
 ANALYZE teiv_data."o-ran-smo-teiv-ran_AntennaCapability";
 
 ANALYZE teiv_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82";
 
 ANALYZE teiv_data."o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE";
 
+ANALYZE teiv_data."5A1D611A68E4A8B2F007A89876701DB3FA88346E";
+
+ANALYZE teiv_data."B83D20388E54C581319034D29C555DE6F8D938FF";
+
 ANALYZE teiv_data."o-ran-smo-teiv-equipment_AntennaModule";
 
+ANALYZE teiv_data."D4A45C271462B28FB655CFCF2F2D826236C78062";
+
 ANALYZE teiv_data."o-ran-smo-teiv-ran_ORUFunction";
 
 ANALYZE teiv_data."o-ran-smo-teiv-ran_NRCellCU";
index 98252f8..20ec07c 100644 (file)
@@ -1,7 +1,7 @@
 --
 -- ============LICENSE_START=======================================================
 -- Copyright (C) 2024 Ericsson
--- Modifications Copyright (C) 2024-2025 OpenInfra Foundation Europe
+-- Modifications Copyright (C) 2025 OpenInfra Foundation Europe
 -- ================================================================================
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.
index 678d9ce..125a217 100644 (file)
@@ -1,7 +1,7 @@
 --
 -- ============LICENSE_START=======================================================
 -- Copyright (C) 2024 Ericsson
--- Modifications Copyright (C) 2024-2025 OpenInfra Foundation Europe
+-- Modifications Copyright (C) 2025 OpenInfra Foundation Europe
 -- ================================================================================
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.
index 98779db..969622f 100755 (executable)
@@ -50,6 +50,7 @@ if [ -z "$1" ]
   else
     echo "Using helm override flavour: $FLAVOUR"
     if [ -f "../../helm-override/$FLAVOUR/onap-flavour-config.yaml" ]; then
+      echo -e "\e[33mPlease ensure that the helm-override/$FLAVOUR onap override config file contains a kubernetes participant entry to add your helm repository to the whitelist.\e[0m"
       echo "Generating onap-override.yaml for flavour $FLAVOUR"
       yq eval-all '. as $item ireduce ({}; . * $item )' ../../helm-override/default/onap-override.yaml ../../helm-override/$FLAVOUR/onap-flavour-config.yaml > ../../helm-override/$FLAVOUR/onap-override.yaml
       IS_GENERATED_ONAP_OVERRIDE=true
diff --git a/smo-install/tests_oom/du-simulator-pynts/Chart.yaml b/smo-install/tests_oom/du-simulator-pynts/Chart.yaml
new file mode 100644 (file)
index 0000000..13db487
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2025: OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+
+apiVersion: v1
+appVersion: "1.0.0"
+description: A Helm chart for o-du simulator pynts
+name: du-simulator-pynts
+version: 1.0.0
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/_3gpp-common-managed-element-running.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/_3gpp-common-managed-element-running.json
new file mode 100644 (file)
index 0000000..8ddc6bc
--- /dev/null
@@ -0,0 +1,102 @@
+{
+    "_3gpp-common-managed-element:ManagedElement": [
+      {
+        "id": "ManagedElement-002",
+        "attributes": {
+          "priorityLabel": 1
+        },
+        "_3gpp-nr-nrm-gnbdufunction:GNBDUFunction": [
+          {
+            "id": "GNBDUFunction-001",
+            "attributes": {
+              "priorityLabel": 1,
+              "gNBId": "1",
+              "gNBIdLength": 24,
+              "gNBDUId": "1",
+              "gNBDUName": "hostname_here"
+            },
+            "_3gpp-nr-nrm-nrcelldu:NRCellDU": [
+              {
+                "id": "NRCellDU-001",
+                "attributes": {
+                  "priorityLabel": 1,
+                  "cellLocalId": 1,
+                  "pLMNInfoList": [
+                    {
+                      "mcc": "310",
+                      "mnc": "410",
+                      "sd": "ff:ff:ff",
+                      "sst": 1
+                    },
+                    {
+                      "mcc": "310",
+                      "mnc": "410",
+                      "sd": "ff:ff:ff",
+                      "sst": 2
+                    },
+                    {
+                      "mcc": "310",
+                      "mnc": "410",
+                      "sd": "ff:ff:ff",
+                      "sst": 3
+                    },
+                    {
+                      "mcc": "310",
+                      "mnc": "410",
+                      "sd": "ff:ff:ff",
+                      "sst": 4
+                    },
+                    {
+                      "mcc": "310",
+                      "mnc": "410",
+                      "sd": "ff:ff:ff",
+                      "sst": 5
+                    },
+                    {
+                      "mcc": "310",
+                      "mnc": "410",
+                      "sd": "ff:ff:ff",
+                      "sst": 6
+                    }
+                  ],
+                  "nPNIdentityList": [
+                    {
+                      "idx": 0,
+                      "plmnid": [
+                        {
+                          "mcc": "310",
+                          "mnc": "410"
+                        }
+                      ],
+                      "cAGIdList": "cAGIdList1",
+                      "nIDList": "nIDList1"
+                    }
+                  ],
+                  "nRPCI": 1,
+                  "arfcnDL": 1,
+                  "rimRSMonitoringStartTime": "2024-06-19T20:00:00+00:00",
+                  "rimRSMonitoringStopTime": "2024-06-19T21:00:00+00:00",
+                  "rimRSMonitoringWindowDuration": 1,
+                  "rimRSMonitoringWindowStartingOffset": 1,
+                  "rimRSMonitoringWindowPeriodicity": 1,
+                  "rimRSMonitoringOccasionInterval": 1,
+                  "rimRSMonitoringOccasionStartingOffset": 0,
+                  "ssbFrequency": 1,
+                  "ssbPeriodicity": 5,
+                  "ssbSubCarrierSpacing": 15,
+                  "ssbOffset": 1,
+                  "ssbDuration": 1,
+                  "nRSectorCarrierRef": [
+                    "CN=NR-Sector-Carrier-001"
+                  ],
+                  "victimSetRef": "CN=Victim-Set-001",
+                  "aggressorSetRef": "CN=Aggressor-Set-001"
+                }
+              }
+            ]
+          }
+        ]
+      }
+    ]
+  }
+  
\ No newline at end of file
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/draft-schema-mount.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/draft-schema-mount.json
new file mode 100644 (file)
index 0000000..62ebfb0
--- /dev/null
@@ -0,0 +1,42 @@
+{
+  "ietf-yang-schema-mount:schema-mounts": {
+    "namespace": [
+      {
+        "prefix": "or-agg-base",
+        "uri": "urn:o-ran:agg-base:1.0"
+      },
+      {
+        "prefix": "o-ran-int",
+        "uri": "urn:o-ran:interfaces:1.0"
+      },
+      {
+        "prefix": "o-ran-hw",
+        "uri": "urn:o-ran:hardware:1.0"
+      },
+      {
+        "prefix": "hw",
+        "uri": "urn:ietf:params:xml:ns:yang:ietf-hardware"
+      }
+    ],
+    "mount-point": [
+      {
+        "module": "o-ran-agg-interfaces",
+        "label": "interfaces-root",
+        "config": true,
+        "shared-schema": {}
+      },
+      {
+        "module": "o-ran-agg-hardware",
+        "label": "hardware-root",
+        "config": true,
+        "shared-schema": {}
+      },
+      {
+        "module": "o-ran-agg-ietf-hardware",
+        "label": "ietf-hardware-root",
+        "config": true,
+        "shared-schema": {}
+      }
+    ]
+  }
+}
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-hardware-running.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-hardware-running.json
new file mode 100644 (file)
index 0000000..d4ca9c3
--- /dev/null
@@ -0,0 +1,79 @@
+{
+    "ietf-hardware:hardware": {
+      "component": [
+        {
+          "name": "O-RU-Chassis",
+          "class": "iana-hardware:chassis",
+          "parent-rel-pos": 0,
+          "alias": "concat(node-id, '-', component/name)",
+          "asset-id": "uuid(node-id, component/name)",          
+          "state": {
+            "admin-state": "unlocked"
+          }
+        },
+        {
+          "name": "O-RU-Board",
+          "class": "o-ran-hardware:O-RAN-RADIO",
+          "parent": "O-RU-Chassis",
+          "parent-rel-pos": 0,
+          "alias": "concat(node-id, '-', component/name)",
+          "asset-id": "uuid(node-id, component/name)",          
+          "state": {
+            "admin-state": "unlocked"
+          },
+          "o-ran-hardware:energy-saving-enabled": true,
+          "o-ran-hardware:o-ran-name": "O-RU-Board"
+        },        
+        
+        {
+          "name": "O-RU-BF-CAL",
+          "class": "o-ran-hardware:O-RU-BF-CAL",
+          "parent": "O-RU-Chassis",
+          "parent-rel-pos": 3,
+          "alias": "concat(node-id, '-', component/name)",
+          "asset-id": "uuid(node-id, component/name)",          
+          "state": {
+            "admin-state": "unlocked"
+          }
+        },
+        {
+          "name": "O-RU-FEEDER",
+          "class": "o-ran-hardware:O-RU-FEEDER",
+          "parent": "O-RU-Chassis",
+          "parent-rel-pos": 4,
+          "alias": "concat(node-id, '-', component/name)",
+          "asset-id": "uuid(node-id, component/name)",          
+          "state": {
+            "admin-state": "unlocked"
+          }
+        },
+        {
+          "name": "O-RU-FPGA",
+          "class": "o-ran-hardware:O-RU-FPGA",
+          "parent": "O-RU-Chassis",
+          "parent-rel-pos": 5,
+          "alias": "concat(node-id, '-', component/name)",
+          "asset-id": "uuid(node-id, component/name)",          
+          "state": {
+            "admin-state": "unlocked"
+          },
+          "o-ran-hardware:energy-saving-enabled": true,
+          "o-ran-hardware:o-ran-name": "O-RU-FPGA"
+        },
+        {
+          "name": "O-RU-POWER-AMPLIFIER",
+          "class": "o-ran-hardware:O-RU-POWER-AMPLIFIER",
+          "parent": "O-RU-Chassis",
+          "parent-rel-pos": 6,
+          "alias": "concat(node-id, '-', component/name)",
+          "asset-id": "uuid(node-id, component/name)",          
+          "state": {
+            "admin-state": "unlocked"
+          },
+          "o-ran-hardware:energy-saving-enabled": true,
+          "o-ran-hardware:o-ran-name": "O-RU-POWER-AMPLIFIER"
+        }
+      ]
+    }
+  }
+  
\ No newline at end of file
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-netconf-acm-running.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-netconf-acm-running.json
new file mode 100644 (file)
index 0000000..49561a7
--- /dev/null
@@ -0,0 +1,88 @@
+{
+    "ietf-netconf-acm:nacm": {
+      "enable-nacm": true,
+      "read-default": "permit",
+      "write-default": "deny",
+      "exec-default": "permit",
+      "enable-external-groups": false,
+      "groups": {
+        "group": [
+          {
+            "name": "sudo",
+            "user-name": [
+              "sudo",
+              "admin",
+              "demx8as6",
+              "netconf"
+            ]
+          },
+          {
+            "name": "nms",
+            "user-name": [
+              "nms",
+              "nero"
+            ]
+          },
+          {
+            "name": "fm-pm",
+            "user-name": [
+              "fm-pm",
+              "filippa"
+            ]
+          },
+          {
+            "name": "swm",
+            "user-name": [
+              "swm",
+              "swami"
+            ]
+          },
+          {
+            "name": "smo",
+            "user-name": [
+              "smo",
+              "simone"
+            ]
+          },
+          {
+            "name": "hybrid-odu",
+            "user-name": [
+              "hybrid-odu",
+              "haydon"
+            ]
+          },
+          {
+            "name": "carrier",
+            "user-name": [
+              "carrier",
+              "carron"
+            ]
+          }
+        ]
+      },
+      "rule-list": [
+        {
+          "name": "admin-rule",
+          "group": [
+            "sudo",
+            "nms",
+            "fm-pm",
+            "swm",
+            "smo",
+            "hybrid-odu",
+            "carrier"
+          ],
+          "rule": [
+            {
+              "name": "allow-all",
+              "module-name": "*",
+              "access-operations": "*",
+              "action": "permit",
+              "comment": "All is allowed, no restictions!"
+            }
+          ]
+        }
+      ]
+    }
+  }
+  
\ No newline at end of file
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-netconf-server-running.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-netconf-server-running.json
new file mode 100644 (file)
index 0000000..9377645
--- /dev/null
@@ -0,0 +1,42 @@
+{
+  "ietf-netconf-server:netconf-server": {
+    "listen": {
+      "idle-timeout": 0,
+      "endpoints": {
+        "endpoint": [
+          {
+            "name": "ssh-endpoint-830",
+            "ssh": {
+              "tcp-server-parameters": {
+                "local-address": "0.0.0.0",
+                "local-port": 830
+              },
+              "ssh-server-parameters": {
+                "server-identity": {
+                  "host-key": [
+                    {
+                      "name": "melacon-key",
+                      "public-key": {
+                        "central-keystore-reference": "serverkey-ssh"
+                      }
+                    }
+                  ]
+                },
+                "client-authentication": {
+                  "users": {
+                    "user": [
+                      {
+                        "name": "netconf",
+                        "password": "$0$netconf!"
+                      }
+                    ]
+                  }
+                }
+              }
+            }
+          }
+        ]
+      }
+    }
+  }
+}
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-yang-schema-mount.xml b/smo-install/tests_oom/du-simulator-pynts/resources/data/ietf-yang-schema-mount.xml
new file mode 100644 (file)
index 0000000..a2aa2f0
--- /dev/null
@@ -0,0 +1,36 @@
+<schema-mounts xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount">
+       <namespace>
+               <prefix>or-agg-base</prefix>
+               <uri>urn:o-ran:agg-base:1.0</uri>
+       </namespace>
+       <namespace>
+               <prefix>o-ran-int</prefix>
+               <uri>urn:o-ran:interfaces:1.0</uri>
+       </namespace>
+       <namespace>
+               <prefix>o-ran-hw</prefix>
+               <uri>urn:o-ran:hardware:1.0</uri>
+       </namespace>
+       <namespace>
+               <prefix>hw</prefix>
+               <uri>urn:ietf:params:xml:ns:yang:ietf-hardware</uri>
+       </namespace>
+       <mount-point>
+               <module>o-ran-agg-interfaces</module>
+               <label>interfaces-root</label>
+               <config>true</config>
+               <inline/>
+       </mount-point>
+       <mount-point>
+               <module>o-ran-agg-hardware</module>
+               <label>hardware-root</label>
+               <config>true</config>
+               <inline/>
+       </mount-point>
+       <mount-point>
+               <module>o-ran-agg-ietf-hardware</module>
+               <label>ietf-hardware-root</label>
+               <config>true</config>
+               <inline/>
+       </mount-point>
+</schema-mounts>
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-aggregation-base-d-operational-draft.xml b/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-aggregation-base-d-operational-draft.xml
new file mode 100644 (file)
index 0000000..df13fb3
--- /dev/null
@@ -0,0 +1,37 @@
+<aggregated-o-ru xmlns="urn:o-ran:agg-base:1.0">
+  <aggregation>
+    <ru-instance>Baciells_sRU67XXX_B122601202134000326</ru-instance>
+    <interfaces-model  xmlns="urn:o-ran:agg-interfaces:1.0"> 
+        <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
+          <interface>
+            <name>eth2-UPlane-VLAN</name>
+            <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:l2vlan</type>
+            <enabled>true</enabled>
+            <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
+              <enabled>false</enabled>
+            </ipv4>
+            <vlan-id xmlns="urn:o-ran:interfaces:1.0">5</vlan-id>
+            <mac-address xmlns="urn:o-ran:interfaces:1.0">00:11:22:33:44:55</mac-address>
+          </interface>
+        </interfaces>
+    </interfaces-model>
+    <hardware-model  xmlns="urn:o-ran:agg-hardware:1.0"> 
+        <hardware xmlns="urn:ietf:params:xml:ns:yang:ietf-hardware">          
+          <component>
+            <name>slot0-logical0-bbu</name>
+            <class xmlns:ianahw="urn:ietf:params:xml:ns:yang:iana-hardware">ianahw:port</class>
+            <o-ran-name xmlns="urn:o-ran:hardware:1.0">slot0-logical0-bbu</o-ran-name> 
+          </component>
+        </hardware>
+    </hardware-model>
+    <ietf-hardware-model  xmlns="urn:o-ran:agg-ietf-hardware:1.0"> 
+        <hardware xmlns="urn:ietf:params:xml:ns:yang:ietf-hardware">          
+          <component>
+            <name>slot0-logical0-bbu</name>
+            <class xmlns:ianahw="urn:ietf:params:xml:ns:yang:iana-hardware">ianahw:port</class>
+            <o-ran-name xmlns="urn:o-ran:hardware:1.0">slot0-logical0-bbu</o-ran-name>
+          </component>
+        </hardware>
+    </ietf-hardware-model>
+  </aggregation>
+</aggregated-o-ru>
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-aggregation-base-running-draft.xml b/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-aggregation-base-running-draft.xml
new file mode 100644 (file)
index 0000000..df13fb3
--- /dev/null
@@ -0,0 +1,37 @@
+<aggregated-o-ru xmlns="urn:o-ran:agg-base:1.0">
+  <aggregation>
+    <ru-instance>Baciells_sRU67XXX_B122601202134000326</ru-instance>
+    <interfaces-model  xmlns="urn:o-ran:agg-interfaces:1.0"> 
+        <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
+          <interface>
+            <name>eth2-UPlane-VLAN</name>
+            <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:l2vlan</type>
+            <enabled>true</enabled>
+            <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
+              <enabled>false</enabled>
+            </ipv4>
+            <vlan-id xmlns="urn:o-ran:interfaces:1.0">5</vlan-id>
+            <mac-address xmlns="urn:o-ran:interfaces:1.0">00:11:22:33:44:55</mac-address>
+          </interface>
+        </interfaces>
+    </interfaces-model>
+    <hardware-model  xmlns="urn:o-ran:agg-hardware:1.0"> 
+        <hardware xmlns="urn:ietf:params:xml:ns:yang:ietf-hardware">          
+          <component>
+            <name>slot0-logical0-bbu</name>
+            <class xmlns:ianahw="urn:ietf:params:xml:ns:yang:iana-hardware">ianahw:port</class>
+            <o-ran-name xmlns="urn:o-ran:hardware:1.0">slot0-logical0-bbu</o-ran-name> 
+          </component>
+        </hardware>
+    </hardware-model>
+    <ietf-hardware-model  xmlns="urn:o-ran:agg-ietf-hardware:1.0"> 
+        <hardware xmlns="urn:ietf:params:xml:ns:yang:ietf-hardware">          
+          <component>
+            <name>slot0-logical0-bbu</name>
+            <class xmlns:ianahw="urn:ietf:params:xml:ns:yang:iana-hardware">ianahw:port</class>
+            <o-ran-name xmlns="urn:o-ran:hardware:1.0">slot0-logical0-bbu</o-ran-name>
+          </component>
+        </hardware>
+    </ietf-hardware-model>
+  </aggregation>
+</aggregated-o-ru>
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-usermgmt-operational.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-usermgmt-operational.json
new file mode 100644 (file)
index 0000000..66b7591
--- /dev/null
@@ -0,0 +1,15 @@
+{
+    "o-ran-usermgmt:users":{
+        "user":[
+            {
+                "name":"x",
+                "account-type":"CERTIFICATE",
+                "password":"oiwtbqxj",
+                "enabled":true,
+                "sro-id":[
+                    "x"
+                ]
+            }
+        ]
+    }
+}
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-usermgmt-running.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/o-ran-usermgmt-running.json
new file mode 100644 (file)
index 0000000..c920e7a
--- /dev/null
@@ -0,0 +1,15 @@
+{
+    "o-ran-usermgmt:users":{
+        "user":[
+            {
+                "name":"smo",
+                "account-type":"CERTIFICATE",
+                "password":"oiwtbqxj",
+                "enabled":true,
+                "sro-id":[
+                    "x"
+                ]
+            }
+        ]
+    }
+}
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/index.json b/smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/index.json
new file mode 100644 (file)
index 0000000..ee305b0
--- /dev/null
@@ -0,0 +1,558 @@
+{
+    "config": {
+        "log-period": 60,
+        "repetition-period": 180,
+        "points": [
+            "CellID",
+            "DRB.UEThpUl",
+            "RRU.PrbUsedUl",
+            "PEE.AvgPower",
+            "RRC.ConnMean",
+            "RRU.PrbTotDl",
+            "DRB.UEThpDl",
+            "DRB.UEThpUl"
+        ]
+    },
+    "values": [
+        {
+            "CellID": "S1-B12-C1",
+            "DRB.UEThpUl": 59.5826,
+            "RRU.PrbUsedUl": 96.4558,
+            "PEE.AvgPower": 79.7805,
+            "RRC.ConnMean": 68.2718,
+            "RRU.PrbTotDl": 61.6832,
+            "DRB.UEThpDl": 89.7072
+        },
+        {
+            "CellID": "S2-B16-C1",
+            "DRB.UEThpUl": 0.0714,
+            "RRU.PrbUsedUl": 0.8162,
+            "PEE.AvgPower": 0.8972,
+            "RRC.ConnMean": 0.2901,
+            "RRU.PrbTotDl": 0.0608,
+            "DRB.UEThpDl": 0.1603
+        },
+        {
+            "CellID": "S3-B8-C2",
+            "DRB.UEThpUl": 75.5322,
+            "RRU.PrbUsedUl": 46.7171,
+            "PEE.AvgPower": 59.1284,
+            "RRC.ConnMean": 85.5189,
+            "RRU.PrbTotDl": 41.3678,
+            "DRB.UEThpDl": 78.8236
+        },
+        {
+            "CellID": "S4-B13-C1",
+            "DRB.UEThpUl": 0.0259,
+            "RRU.PrbUsedUl": 0.6092,
+            "PEE.AvgPower": 0.7852,
+            "RRC.ConnMean": 0.5027,
+            "RRU.PrbTotDl": 0.9701,
+            "DRB.UEThpDl": 0.0114
+        },
+        {
+            "CellID": "S5-B10-C1",
+            "DRB.UEThpUl": 68.7758,
+            "RRU.PrbUsedUl": 56.2781,
+            "PEE.AvgPower": 71.4087,
+            "RRC.ConnMean": 72.9864,
+            "RRU.PrbTotDl": 45.8901,
+            "DRB.UEThpDl": 68.6087
+        },
+        {
+            "CellID": "S6-B18-C1",
+            "DRB.UEThpUl": 0.9548,
+            "RRU.PrbUsedUl": 0.5472,
+            "PEE.AvgPower": 0.0427,
+            "RRC.ConnMean": 0.518,
+            "RRU.PrbTotDl": 0.6485,
+            "DRB.UEThpDl": 0.7792
+        },
+        {
+            "CellID": "S7-B15-C3",
+            "DRB.UEThpUl": 57.841,
+            "RRU.PrbUsedUl": 44.6584,
+            "PEE.AvgPower": 84.2197,
+            "RRC.ConnMean": 60.4162,
+            "RRU.PrbTotDl": 86.9439,
+            "DRB.UEThpDl": 52.6081
+        },
+        {
+            "CellID": "S8-B6-C2",
+            "DRB.UEThpUl": 0.0822,
+            "RRU.PrbUsedUl": 0.5193,
+            "PEE.AvgPower": 0.7649,
+            "RRC.ConnMean": 0.742,
+            "RRU.PrbTotDl": 0.2335,
+            "DRB.UEThpDl": 0.7327
+        },
+        {
+            "CellID": "S9-B20-C2",
+            "DRB.UEThpUl": 72.7865,
+            "RRU.PrbUsedUl": 76.1559,
+            "PEE.AvgPower": 52.1118,
+            "RRC.ConnMean": 97.9858,
+            "RRU.PrbTotDl": 60.7153,
+            "DRB.UEThpDl": 81.8402
+        },
+        {
+            "CellID": "S10-B9-C1",
+            "DRB.UEThpUl": 0.7915,
+            "RRU.PrbUsedUl": 0.0661,
+            "PEE.AvgPower": 0.793,
+            "RRC.ConnMean": 0.986,
+            "RRU.PrbTotDl": 0.2807,
+            "DRB.UEThpDl": 0.884
+        },
+        {
+            "CellID": "S1-B12-C1",
+            "DRB.UEThpUl": 96.5225,
+            "RRU.PrbUsedUl": 79.6112,
+            "PEE.AvgPower": 42.4975,
+            "RRC.ConnMean": 67.1954,
+            "RRU.PrbTotDl": 43.1039,
+            "DRB.UEThpDl": 75.7923
+        },
+        {
+            "CellID": "S2-B16-C1",
+            "DRB.UEThpUl": 0.7832,
+            "RRU.PrbUsedUl": 0.5347,
+            "PEE.AvgPower": 0.9656,
+            "RRC.ConnMean": 0.8211,
+            "RRU.PrbTotDl": 0.0081,
+            "DRB.UEThpDl": 0.3836
+        },
+        {
+            "CellID": "S3-B8-C2",
+            "DRB.UEThpUl": 40.6985,
+            "RRU.PrbUsedUl": 40.6656,
+            "PEE.AvgPower": 45.1734,
+            "RRC.ConnMean": 59.1442,
+            "RRU.PrbTotDl": 69.2002,
+            "DRB.UEThpDl": 46.6297
+        },
+        {
+            "CellID": "S4-B13-C1",
+            "DRB.UEThpUl": 0.4698,
+            "RRU.PrbUsedUl": 0.4771,
+            "PEE.AvgPower": 0.6852,
+            "RRC.ConnMean": 0.8375,
+            "RRU.PrbTotDl": 0.0334,
+            "DRB.UEThpDl": 0.0795
+        },
+        {
+            "CellID": "S5-B10-C1",
+            "DRB.UEThpUl": 40.1516,
+            "RRU.PrbUsedUl": 84.8344,
+            "PEE.AvgPower": 97.379,
+            "RRC.ConnMean": 50.3251,
+            "RRU.PrbTotDl": 99.8289,
+            "DRB.UEThpDl": 86.9293
+        },
+        {
+            "CellID": "S6-B18-C1",
+            "DRB.UEThpUl": 0.818,
+            "RRU.PrbUsedUl": 0.3274,
+            "PEE.AvgPower": 0.9575,
+            "RRC.ConnMean": 0.5202,
+            "RRU.PrbTotDl": 0.1489,
+            "DRB.UEThpDl": 0.1639
+        },
+        {
+            "CellID": "S7-B15-C3",
+            "DRB.UEThpUl": 81.8754,
+            "RRU.PrbUsedUl": 74.232,
+            "PEE.AvgPower": 77.8562,
+            "RRC.ConnMean": 40.0922,
+            "RRU.PrbTotDl": 73.6128,
+            "DRB.UEThpDl": 62.2899
+        },
+        {
+            "CellID": "S8-B6-C2",
+            "DRB.UEThpUl": 0.1028,
+            "RRU.PrbUsedUl": 0.0088,
+            "PEE.AvgPower": 0.3786,
+            "RRC.ConnMean": 0.2084,
+            "RRU.PrbTotDl": 0.0056,
+            "DRB.UEThpDl": 0.4293
+        },
+        {
+            "CellID": "S9-B20-C2",
+            "DRB.UEThpUl": 94.506,
+            "RRU.PrbUsedUl": 68.9178,
+            "PEE.AvgPower": 68.4886,
+            "RRC.ConnMean": 98.4145,
+            "RRU.PrbTotDl": 42.57,
+            "DRB.UEThpDl": 42.7555
+        },
+        {
+            "CellID": "S10-B9-C1",
+            "DRB.UEThpUl": 0.2933,
+            "RRU.PrbUsedUl": 0.7714,
+            "PEE.AvgPower": 0.5996,
+            "RRC.ConnMean": 0.8991,
+            "RRU.PrbTotDl": 0.6708,
+            "DRB.UEThpDl": 0.8827
+        },
+        {
+            "CellID": "S1-B12-C1",
+            "DRB.UEThpUl": 59.5465,
+            "RRU.PrbUsedUl": 91.0088,
+            "PEE.AvgPower": 90.5416,
+            "RRC.ConnMean": 44.3966,
+            "RRU.PrbTotDl": 83.631,
+            "DRB.UEThpDl": 53.3233
+        },
+        {
+            "CellID": "S2-B16-C1",
+            "DRB.UEThpUl": 0.8956,
+            "RRU.PrbUsedUl": 0.9325,
+            "PEE.AvgPower": 0.086,
+            "RRC.ConnMean": 0.2087,
+            "RRU.PrbTotDl": 0.8264,
+            "DRB.UEThpDl": 0.9409
+        },
+        {
+            "CellID": "S3-B8-C2",
+            "DRB.UEThpUl": 92.4895,
+            "RRU.PrbUsedUl": 54.6829,
+            "PEE.AvgPower": 70.4169,
+            "RRC.ConnMean": 94.4704,
+            "RRU.PrbTotDl": 95.7686,
+            "DRB.UEThpDl": 94.7993
+        },
+        {
+            "CellID": "S4-B13-C1",
+            "DRB.UEThpUl": 0.2117,
+            "RRU.PrbUsedUl": 0.4663,
+            "PEE.AvgPower": 0.6901,
+            "RRC.ConnMean": 0.5322,
+            "RRU.PrbTotDl": 0.0211,
+            "DRB.UEThpDl": 0.552
+        },
+        {
+            "CellID": "S5-B10-C1",
+            "DRB.UEThpUl": 49.563,
+            "RRU.PrbUsedUl": 89.3529,
+            "PEE.AvgPower": 79.8104,
+            "RRC.ConnMean": 95.6759,
+            "RRU.PrbTotDl": 91.0411,
+            "DRB.UEThpDl": 52.6087
+        },
+        {
+            "CellID": "S6-B18-C1",
+            "DRB.UEThpUl": 0.0462,
+            "RRU.PrbUsedUl": 0.8654,
+            "PEE.AvgPower": 0.7832,
+            "RRC.ConnMean": 0.6798,
+            "RRU.PrbTotDl": 0.0515,
+            "DRB.UEThpDl": 0.8971
+        },
+        {
+            "CellID": "S7-B15-C3",
+            "DRB.UEThpUl": 80.9549,
+            "RRU.PrbUsedUl": 59.4115,
+            "PEE.AvgPower": 64.2085,
+            "RRC.ConnMean": 64.8208,
+            "RRU.PrbTotDl": 53.1859,
+            "DRB.UEThpDl": 50.0435
+        },
+        {
+            "CellID": "S8-B6-C2",
+            "DRB.UEThpUl": 0.24,
+            "RRU.PrbUsedUl": 0.9331,
+            "PEE.AvgPower": 0.9261,
+            "RRC.ConnMean": 0.2122,
+            "RRU.PrbTotDl": 0.2661,
+            "DRB.UEThpDl": 0.1824
+        },
+        {
+            "CellID": "S9-B20-C2",
+            "DRB.UEThpUl": 82.9617,
+            "RRU.PrbUsedUl": 45.5772,
+            "PEE.AvgPower": 72.3097,
+            "RRC.ConnMean": 90.5276,
+            "RRU.PrbTotDl": 75.2483,
+            "DRB.UEThpDl": 59.5985
+        },
+        {
+            "CellID": "S10-B9-C1",
+            "DRB.UEThpUl": 0.0273,
+            "RRU.PrbUsedUl": 0.5786,
+            "PEE.AvgPower": 0.2871,
+            "RRC.ConnMean": 0.1592,
+            "RRU.PrbTotDl": 0.8408,
+            "DRB.UEThpDl": 0.717
+        },
+        {
+            "CellID": "S1-B12-C1",
+            "DRB.UEThpUl": 62.3498,
+            "RRU.PrbUsedUl": 91.482,
+            "PEE.AvgPower": 92.0915,
+            "RRC.ConnMean": 71.3121,
+            "RRU.PrbTotDl": 72.0634,
+            "DRB.UEThpDl": 67.2928
+        },
+        {
+            "CellID": "S2-B16-C1",
+            "DRB.UEThpUl": 0.5113,
+            "RRU.PrbUsedUl": 0.0371,
+            "PEE.AvgPower": 0.1278,
+            "RRC.ConnMean": 0.6468,
+            "RRU.PrbTotDl": 0.3103,
+            "DRB.UEThpDl": 0.6871
+        },
+        {
+            "CellID": "S3-B8-C2",
+            "DRB.UEThpUl": 58.3336,
+            "RRU.PrbUsedUl": 57.8022,
+            "PEE.AvgPower": 89.1327,
+            "RRC.ConnMean": 62.9722,
+            "RRU.PrbTotDl": 60.8412,
+            "DRB.UEThpDl": 87.6248
+        },
+        {
+            "CellID": "S4-B13-C1",
+            "DRB.UEThpUl": 0.7887,
+            "RRU.PrbUsedUl": 0.9631,
+            "PEE.AvgPower": 0.99,
+            "RRC.ConnMean": 0.9988,
+            "RRU.PrbTotDl": 0.5237,
+            "DRB.UEThpDl": 0.3949
+        },
+        {
+            "CellID": "S5-B10-C1",
+            "DRB.UEThpUl": 79.5851,
+            "RRU.PrbUsedUl": 55.9526,
+            "PEE.AvgPower": 54.3715,
+            "RRC.ConnMean": 72.2489,
+            "RRU.PrbTotDl": 51.9326,
+            "DRB.UEThpDl": 85.2402
+        },
+        {
+            "CellID": "S6-B18-C1",
+            "DRB.UEThpUl": 0.1318,
+            "RRU.PrbUsedUl": 0.7833,
+            "PEE.AvgPower": 0.1607,
+            "RRC.ConnMean": 0.0413,
+            "RRU.PrbTotDl": 0.173,
+            "DRB.UEThpDl": 0.3085
+        },
+        {
+            "CellID": "S7-B15-C3",
+            "DRB.UEThpUl": 95.5751,
+            "RRU.PrbUsedUl": 83.8768,
+            "PEE.AvgPower": 57.8375,
+            "RRC.ConnMean": 87.6277,
+            "RRU.PrbTotDl": 72.8009,
+            "DRB.UEThpDl": 86.7397
+        },
+        {
+            "CellID": "S8-B6-C2",
+            "DRB.UEThpUl": 0.1779,
+            "RRU.PrbUsedUl": 0.4167,
+            "PEE.AvgPower": 0.4781,
+            "RRC.ConnMean": 0.4906,
+            "RRU.PrbTotDl": 0.6609,
+            "DRB.UEThpDl": 0.0513
+        },
+        {
+            "CellID": "S9-B20-C2",
+            "DRB.UEThpUl": 55.243,
+            "RRU.PrbUsedUl": 82.7602,
+            "PEE.AvgPower": 89.2267,
+            "RRC.ConnMean": 75.2858,
+            "RRU.PrbTotDl": 71.2264,
+            "DRB.UEThpDl": 67.9299
+        },
+        {
+            "CellID": "S10-B9-C1",
+            "DRB.UEThpUl": 0.0781,
+            "RRU.PrbUsedUl": 0.2334,
+            "PEE.AvgPower": 0.39,
+            "RRC.ConnMean": 0.0655,
+            "RRU.PrbTotDl": 0.7133,
+            "DRB.UEThpDl": 0.6836
+        },
+        {
+            "CellID": "S1-B12-C1",
+            "DRB.UEThpUl": 87.4303,
+            "RRU.PrbUsedUl": 61.1997,
+            "PEE.AvgPower": 80.1301,
+            "RRC.ConnMean": 99.2536,
+            "RRU.PrbTotDl": 78.8335,
+            "DRB.UEThpDl": 54.8495
+        },
+        {
+            "CellID": "S2-B16-C1",
+            "DRB.UEThpUl": 0.2997,
+            "RRU.PrbUsedUl": 0.4072,
+            "PEE.AvgPower": 0.2424,
+            "RRC.ConnMean": 0.397,
+            "RRU.PrbTotDl": 0.6329,
+            "DRB.UEThpDl": 0.7617
+        },
+        {
+            "CellID": "S3-B8-C2",
+            "DRB.UEThpUl": 42.4451,
+            "RRU.PrbUsedUl": 79.9108,
+            "PEE.AvgPower": 40.2918,
+            "RRC.ConnMean": 50.2221,
+            "RRU.PrbTotDl": 49.9943,
+            "DRB.UEThpDl": 94.4816
+        },
+        {
+            "CellID": "S4-B13-C1",
+            "DRB.UEThpUl": 0.423,
+            "RRU.PrbUsedUl": 0.5798,
+            "PEE.AvgPower": 0.5649,
+            "RRC.ConnMean": 0.7263,
+            "RRU.PrbTotDl": 0.9262,
+            "DRB.UEThpDl": 0.1588
+        },
+        {
+            "CellID": "S5-B10-C1",
+            "DRB.UEThpUl": 74.8043,
+            "RRU.PrbUsedUl": 94.9445,
+            "PEE.AvgPower": 76.527,
+            "RRC.ConnMean": 82.541,
+            "RRU.PrbTotDl": 92.9121,
+            "DRB.UEThpDl": 69.1728
+        },
+        {
+            "CellID": "S6-B18-C1",
+            "DRB.UEThpUl": 0.3005,
+            "RRU.PrbUsedUl": 0.2273,
+            "PEE.AvgPower": 0.7726,
+            "RRC.ConnMean": 0.745,
+            "RRU.PrbTotDl": 0.0831,
+            "DRB.UEThpDl": 0.9653
+        },
+        {
+            "CellID": "S7-B15-C3",
+            "DRB.UEThpUl": 84.9782,
+            "RRU.PrbUsedUl": 55.8589,
+            "PEE.AvgPower": 41.9904,
+            "RRC.ConnMean": 96.7841,
+            "RRU.PrbTotDl": 47.1474,
+            "DRB.UEThpDl": 42.9496
+        },
+        {
+            "CellID": "S8-B6-C2",
+            "DRB.UEThpUl": 0.9566,
+            "RRU.PrbUsedUl": 0.9828,
+            "PEE.AvgPower": 0.8539,
+            "RRC.ConnMean": 0.4352,
+            "RRU.PrbTotDl": 0.2322,
+            "DRB.UEThpDl": 0.9028
+        },
+        {
+            "CellID": "S9-B20-C2",
+            "DRB.UEThpUl": 75.6737,
+            "RRU.PrbUsedUl": 46.7779,
+            "PEE.AvgPower": 53.1495,
+            "RRC.ConnMean": 63.1165,
+            "RRU.PrbTotDl": 88.0041,
+            "DRB.UEThpDl": 88.4434
+        },
+        {
+            "CellID": "S10-B9-C1",
+            "DRB.UEThpUl": 0.5475,
+            "RRU.PrbUsedUl": 0.8577,
+            "PEE.AvgPower": 0.0103,
+            "RRC.ConnMean": 0.0346,
+            "RRU.PrbTotDl": 0.5218,
+            "DRB.UEThpDl": 0.1595
+        },
+        {
+            "CellID": "S1-B12-C1",
+            "DRB.UEThpUl": 54.4942,
+            "RRU.PrbUsedUl": 69.0927,
+            "PEE.AvgPower": 54.8878,
+            "RRC.ConnMean": 62.8203,
+            "RRU.PrbTotDl": 58.3231,
+            "DRB.UEThpDl": 55.7532
+        },
+        {
+            "CellID": "S2-B16-C1",
+            "DRB.UEThpUl": 0.4924,
+            "RRU.PrbUsedUl": 0.3077,
+            "PEE.AvgPower": 0.8324,
+            "RRC.ConnMean": 0.6394,
+            "RRU.PrbTotDl": 0.5876,
+            "DRB.UEThpDl": 0.1222
+        },
+        {
+            "CellID": "S3-B8-C2",
+            "DRB.UEThpUl": 78.6898,
+            "RRU.PrbUsedUl": 90.692,
+            "PEE.AvgPower": 53.8659,
+            "RRC.ConnMean": 53.9286,
+            "RRU.PrbTotDl": 96.0397,
+            "DRB.UEThpDl": 91.7593
+        },
+        {
+            "CellID": "S4-B13-C1",
+            "DRB.UEThpUl": 0.6832,
+            "RRU.PrbUsedUl": 0.6948,
+            "PEE.AvgPower": 0.396,
+            "RRC.ConnMean": 0.2497,
+            "RRU.PrbTotDl": 0.4098,
+            "DRB.UEThpDl": 0.0201
+        },
+        {
+            "CellID": "S5-B10-C1",
+            "DRB.UEThpUl": 46.2357,
+            "RRU.PrbUsedUl": 45.3905,
+            "PEE.AvgPower": 53.6832,
+            "RRC.ConnMean": 76.9439,
+            "RRU.PrbTotDl": 95.1331,
+            "DRB.UEThpDl": 80.9837
+        },
+        {
+            "CellID": "S6-B18-C1",
+            "DRB.UEThpUl": 0.9075,
+            "RRU.PrbUsedUl": 0.9157,
+            "PEE.AvgPower": 0.9855,
+            "RRC.ConnMean": 0.4382,
+            "RRU.PrbTotDl": 0.9616,
+            "DRB.UEThpDl": 0.0178
+        },
+        {
+            "CellID": "S7-B15-C3",
+            "DRB.UEThpUl": 47.5007,
+            "RRU.PrbUsedUl": 40.1109,
+            "PEE.AvgPower": 44.402,
+            "RRC.ConnMean": 79.3982,
+            "RRU.PrbTotDl": 58.379,
+            "DRB.UEThpDl": 55.1792
+        },
+        {
+            "CellID": "S8-B6-C2",
+            "DRB.UEThpUl": 0.8102,
+            "RRU.PrbUsedUl": 0.0639,
+            "PEE.AvgPower": 0.9358,
+            "RRC.ConnMean": 0.0968,
+            "RRU.PrbTotDl": 0.1533,
+            "DRB.UEThpDl": 0.0451
+        },
+        {
+            "CellID": "S9-B20-C2",
+            "DRB.UEThpUl": 54.5899,
+            "RRU.PrbUsedUl": 77.8031,
+            "PEE.AvgPower": 95.2123,
+            "RRC.ConnMean": 94.1216,
+            "RRU.PrbTotDl": 81.8552,
+            "DRB.UEThpDl": 96.4492
+        },
+        {
+            "CellID": "S10-B9-C1",
+            "DRB.UEThpUl": 0.7165,
+            "RRU.PrbUsedUl": 0.9583,
+            "PEE.AvgPower": 0.9415,
+            "RRC.ConnMean": 0.7898,
+            "RRU.PrbTotDl": 0.3762,
+            "DRB.UEThpDl": 0.0985
+        }
+    ]
+}
\ No newline at end of file
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/template.xml b/smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/template.xml
new file mode 100644 (file)
index 0000000..d5ae40e
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+       <fileHeader fileFormatVersion="32.435 V7.0" vendorName="PyNTS" dnPrefix="DC=pynts.domain">
+               <fileSender localDn="ManagedElement=@hostname@" elementType="nts-element"/>
+               <measCollec beginTime="@start-time@"/>
+       </fileHeader>
+       <measData>
+               <managedElement localDn="ManagedElement=@hostname@" userLabel=""/>
+               <measInfo>
+                       <job jobId="1"/>
+                       <granPeriod duration="@log-period@" endTime="@end-time@"/>
+                       <repPeriod duration="@rep-period@"/>
+                       @point-start@<measType p="@point-id@">@point-name@</measType>@point-end@
+                       <measValue measObjLdn="DuFunction=@du-id@,CellId=@cell-id@">
+                               @value-start@<r p="@point-id@">@value@</r>@value-end@
+                               @suspect@
+                       </measValue>
+               </measInfo>
+       </measData>
+       <fileFooter>
+               <measCollec endTime="@end-time@"/>
+       </fileFooter>
+</measCollecFile>
diff --git a/smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/template_5G_NR.xml b/smo-install/tests_oom/du-simulator-pynts/resources/data/performance-management/template_5G_NR.xml
new file mode 100644 (file)
index 0000000..dce9318
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
+<measDataFile xmlns="http://www.3gpp.org/ftp/specs/archive/28_series/28.532#measData" xsi:schemaLocation="http://www.3gpp.org/ftp/specs/archive/28_series/28.532#measData schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+       <fileHeader fileFormatVersion="28.532 V18.0.0" vendorName="PyNTS" dnPrefix="DC=pynts.domain">
+               <fileSender senderName="ManagedElement=@hostname@" senderType="pynts-element"/>
+               <measData beginTime="@start-time@"/>
+       </fileHeader>
+       <measData>
+    <measEntity localDn="ManagedElement=@hostname@" />
+    <measInfo measInfoId="5.1.1.1.1">
+      <job jobId="0" />
+                       <granPeriod duration="@log-period@" endTime="@end-time@"/>
+                       <repPeriod duration="@rep-period@"/>
+      @point-start@<measType p="@point-id@">@point-name@</measType>@point-end@
+                       <measValue measObjLdn="ManagedElement=@hostname@,GNBDUFunction=1,NRCellDU=1">
+                               @value-start@<r p="@point-id@">@value@</r>@value-end@
+                               @suspect@
+                       </measValue>
+    </measInfo>                
+       </measData>
+       <fileFooter>
+               <measData endTime="@end-time@"/>
+       </fileFooter>
+</measDataFile>
diff --git a/smo-install/tests_oom/du-simulator-pynts/templates/configmap.yaml b/smo-install/tests_oom/du-simulator-pynts/templates/configmap.yaml
new file mode 100644 (file)
index 0000000..eca2e40
--- /dev/null
@@ -0,0 +1,97 @@
+{{/*
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2025: OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+*/}}
+
+{{ $currentScope := .}}
+{{- range $i, $du := .Values.dus }}
+  {{- $_ := set $ "du" $du }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ $du.name }}-configmap
+  labels:
+    sim-name: {{ $du.name }}
+    release: {{ $.Release.Name }}
+    chart: {{ $.Chart.Name }}
+data:
+  {{- range $path, $_ :=  $.Files.Glob "resources/data/*.{json,xml}" }}
+  {{- if ne $path "resources/data/_3gpp-common-managed-element-running.json" }}
+  {{ base $path }}: |
+    {{- $.Files.Get $path | nindent 4 }}
+  {{- end }}
+  {{- end }}
+  _3gpp-common-managed-element-running.json: |-
+    {
+      "_3gpp-common-managed-element:ManagedElement": [
+        {
+          "id": {{ $.Values.managedElement.id | quote }},
+          "attributes": {
+            "priorityLabel": {{ $.Values.managedElement.priorityLabel }}
+          },
+          "_3gpp-nr-nrm-gnbdufunction:GNBDUFunction": [
+            {
+              "id": {{ $.Values.managedElement.gnbdufunction.id | quote }},
+              "attributes": {
+                "priorityLabel": {{ $.Values.managedElement.gnbdufunction.priorityLabel }},
+                "gNBId": {{ $.Values.managedElement.gnbdufunction.gNBId | quote }},
+                "gNBIdLength": {{ $.Values.managedElement.gnbdufunction.gNBIdLength }},
+                "gNBDUId": {{ $.Values.managedElement.gnbdufunction.gNBDUId | quote }},
+                "gNBDUName": {{ $.Values.managedElement.gnbdufunction.gNBDUName | quote }}
+              },
+              "_3gpp-nr-nrm-nrcelldu:NRCellDU": [
+              {{- range $index, $cell := $.Values.nrCellDUs }}
+              {{- if $index }},{{ end }}
+                {
+                  "id": {{ $cell.id | quote }},
+                  "attributes": {
+                    "priorityLabel": {{ $.Values.cellDefaults.priorityLabel }},
+                    "cellLocalId": {{ $.Values.cellDefaults.cellLocalId }},
+                    "pLMNInfoList": {{ $.Values.cellDefaults.pLMNInfoList | toJson }},
+                    "nPNIdentityList": {{ $.Values.cellDefaults.nPNIdentityList | toJson }},
+                    "nRPCI": {{ $.Values.cellDefaults.nRPCI }},
+                    "arfcnDL": {{ $.Values.cellDefaults.arfcnDL }},
+                    "rimRSMonitoringStartTime": {{ $.Values.cellDefaults.rimRSMonitoringStartTime | quote }},
+                    "rimRSMonitoringStopTime": {{ $.Values.cellDefaults.rimRSMonitoringStopTime | quote }},
+                    "rimRSMonitoringWindowDuration": {{ $.Values.cellDefaults.rimRSMonitoringWindowDuration }},
+                    "rimRSMonitoringWindowStartingOffset": {{ $.Values.cellDefaults.rimRSMonitoringWindowStartingOffset }},
+                    "rimRSMonitoringWindowPeriodicity": {{ $.Values.cellDefaults.rimRSMonitoringWindowPeriodicity }},
+                    "rimRSMonitoringOccasionInterval": {{ $.Values.cellDefaults.rimRSMonitoringOccasionInterval }},
+                    "rimRSMonitoringOccasionStartingOffset": {{ $.Values.cellDefaults.rimRSMonitoringOccasionStartingOffset }},
+                    "ssbFrequency": {{ $.Values.cellDefaults.ssbFrequency }},
+                    "ssbPeriodicity": {{ $.Values.cellDefaults.ssbPeriodicity }},
+                    "ssbSubCarrierSpacing": {{ $.Values.cellDefaults.ssbSubCarrierSpacing }},
+                    "ssbOffset": {{ $.Values.cellDefaults.ssbOffset }},
+                    "ssbDuration": {{ $.Values.cellDefaults.ssbDuration }},
+                    "nRSectorCarrierRef": {{ $.Values.cellDefaults.nRSectorCarrierRef | toJson }},
+                    "victimSetRef": {{ $.Values.cellDefaults.victimSetRef | quote }},
+                    "aggressorSetRef": {{ $.Values.cellDefaults.aggressorSetRef | quote }}
+                  }
+                }
+              {{- end }}
+              ]
+            }
+          ]
+        }
+      ]
+    }
+
+{{- end }}
diff --git a/smo-install/tests_oom/du-simulator-pynts/templates/configmapenv.yaml b/smo-install/tests_oom/du-simulator-pynts/templates/configmapenv.yaml
new file mode 100644 (file)
index 0000000..2b978c6
--- /dev/null
@@ -0,0 +1,51 @@
+{{/*
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2025: OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+*/}}
+
+{{- range $i, $du := .Values.dus }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ $du.name }}-configmapenv
+  labels:
+    sim-name: {{ $du.name }}-env
+    release: {{ $.Release.Name }}
+    chart: {{ $.Chart.Name }}
+data:
+  SSH_LISTEN_ENDPOINT: {{ $.Values.pyntsSim.ssh.listenEndpoint | quote }}
+  TLS_LISTEN_ENDPOINT: {{ $.Values.pyntsSim.tls.listenEndpoint | quote }}
+  SSH_CALLHOME_ENDPOINT: {{ $.Values.pyntsSim.ssh.callHomeEndpoint | quote }}
+  TLS_CALLHOME_ENDPOINT: {{ $.Values.pyntsSim.tls.callHomeEndpoint | quote }}
+  ENDPOINT_COUNT: {{ $.Values.pyntsSim.endpointCount | quote }}
+  NETCONF_USERNAME: {{ $.Values.pyntsSim.netconf.username | quote }}
+  NETCONF_PASSWORD: {{ $.Values.pyntsSim.netconf.password | quote }}
+  O_DU_CALLHOME_PORT: {{ $.Values.pyntsSim.odu.callhomePort | quote }}
+
+  SDNR_RESTCONF_URL: {{ $.Values.pyntsSim.sdnc.url | quote }}
+  SDNR_USERNAME: {{ $.Values.pyntsSim.sdnc.username | quote }}
+  SDNR_PASSWORD: {{ $.Values.pyntsSim.sdnc.password | quote }}
+
+  VES_URL: {{ $.Values.pyntsSim.ves.url | quote }}
+  VES_USERNAME: {{ $.Values.pyntsSim.ves.username | quote }}
+  VES_PASSWORD: {{ $.Values.pyntsSim.ves.password | quote }}
+
+{{- end }}
diff --git a/smo-install/tests_oom/du-simulator-pynts/templates/deployment.yaml b/smo-install/tests_oom/du-simulator-pynts/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..26533dc
--- /dev/null
@@ -0,0 +1,75 @@
+{{/*
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2025: OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+*/}}
+
+{{- range $i, $du := .Values.dus }}
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ $du.name }}
+  labels:
+    sim-name: {{ $du.name }}
+    release: {{ $.Release.Name }}
+    chart: {{ $.Chart.Name }}
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      sim-name: {{ $du.name }}
+  template:
+    metadata:
+      labels:
+        sim-name: {{ $du.name }}
+        release: {{ $.Release.Name }}
+        chart: {{ $.Chart.Name }}
+      annotations:
+        checksum/config: {{ print $du | sha256sum }}
+    spec:    
+      hostname: "{{ $du.name }}"
+      containers:
+        - name: {{ $.Chart.Name }}
+          image: "{{ $.Values.image.repository }}/{{ $.Values.image.name}}:{{ $.Values.image.tag }}"
+          imagePullPolicy: {{ $.Values.image.pullPolicy }}
+          tty: true
+          stdin: true
+          envFrom:
+            - configMapRef:
+                name: {{ $du.name }}-configmapenv
+          volumeMounts:
+            - name: {{ $du.name }}-config-volume
+              mountPath: /data
+            - name: {{ $du.name }}-pm-config-volume
+              mountPath: /data/performance-management
+          securityContext:
+            capabilities:
+              add:
+                - SYS_ADMIN
+                - SYS_PTRACE
+      volumes: 
+        - name: {{ $du.name }}-config-volume
+          configMap:
+            name: {{ $du.name }}-configmap
+        - name: {{ $du.name }}-pm-config-volume
+          configMap:
+            name: {{ $du.name }}-pm-configmap
+
+{{- end }}
diff --git a/smo-install/tests_oom/du-simulator-pynts/templates/pm-configmap.yaml b/smo-install/tests_oom/du-simulator-pynts/templates/pm-configmap.yaml
new file mode 100644 (file)
index 0000000..7e9156f
--- /dev/null
@@ -0,0 +1,37 @@
+{{/*
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2025: OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+*/}}
+
+{{ $currentScope := .}}
+{{- range $i, $du := .Values.dus }}
+  {{- $_ := set $ "du" $du }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ $du.name }}-pm-configmap
+  labels:
+    sim-name: {{ $du.name }}
+    release: {{ $.Release.Name }}
+    chart: {{ $.Chart.Name }}
+data:
+{{ tpl ($.Files.Glob "resources/data/performance-management/*.{json,xml}").AsConfig $ | indent 2 }}
+{{- end }}
\ No newline at end of file
diff --git a/smo-install/tests_oom/du-simulator-pynts/templates/service.yaml b/smo-install/tests_oom/du-simulator-pynts/templates/service.yaml
new file mode 100644 (file)
index 0000000..a1ba975
--- /dev/null
@@ -0,0 +1,42 @@
+{{/*
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2025: OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+*/}}
+
+{{ range $i, $du := .Values.dus }}
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: "{{ $du.name }}"
+  labels:
+    sim-name: {{ $du.name }}
+    release: {{ $.Release.Name }}
+    chart: {{ $.Chart.Name }}
+spec:
+  type: {{ $.Values.service.type }}
+  ports:
+    - port: {{ $.Values.service.ports.port }}
+  selector:
+    sim-name: {{ $du.name }}
+    release: {{ $.Release.Name }}
+    chart: {{ $.Chart.Name }}
+
+{{- end }}
diff --git a/smo-install/tests_oom/du-simulator-pynts/values.yaml b/smo-install/tests_oom/du-simulator-pynts/values.yaml
new file mode 100644 (file)
index 0000000..9edc355
--- /dev/null
@@ -0,0 +1,171 @@
+#
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2025: OpenInfra Foundation Europe. All rights reserved.
+# ================================================================================
+# 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+
+# Static Defaults
+image:
+  repository: 'nexus3.onap.org:10001/estdemoimages'
+  name: pynts-o-du-o1
+  tag: 0.9.3
+  pullPolicy: IfNotPresent
+
+service:
+  type: NodePort
+  ports:
+    port: 830
+
+managedElement:
+  id: "ManagedElement-002"
+  priorityLabel: 1
+  gnbdufunction:
+    id: "GNBDUFunction-001"
+    priorityLabel: 1
+    gNBId: "1"
+    gNBIdLength: 24
+    gNBDUId: "1"
+    gNBDUName: "hostname_here"
+
+nrCellDUs:
+  - id: "S1-B12-C1"
+  - id: "S2-B16-C1"
+  - id: "S3-B8-C2"
+  - id: "S4-B13-C1"
+  - id: "S5-B10-C1"
+  - id: "S6-B18-C1"
+  - id: "S7-B15-C3"
+  - id: "S8-B6-C2"
+  - id: "S9-B20-C2"
+  - id: "S10-B9-C1"
+
+# Default cell attributes that will be same for all cells
+cellDefaults:
+  priorityLabel: 1
+  cellLocalId: 1
+  pLMNInfoList:
+    - mcc: "310"
+      mnc: "410"
+      sd: "ff:ff:ff"
+      sst: 1
+    - mcc: "310"
+      mnc: "410"
+      sd: "ff:ff:ff"
+      sst: 2
+    - mcc: "310"
+      mnc: "410"
+      sd: "ff:ff:ff"
+      sst: 3
+    - mcc: "310"
+      mnc: "410"
+      sd: "ff:ff:ff"
+      sst: 4
+    - mcc: "310"
+      mnc: "410"
+      sd: "ff:ff:ff"
+      sst: 5
+    - mcc: "310"
+      mnc: "410"
+      sd: "ff:ff:ff"
+      sst: 6
+  nPNIdentityList:
+    - idx: 0
+      plmnid:
+        - mcc: "310"
+          mnc: "410"
+      cAGIdList: "cAGIdList1"
+      nIDList: "nIDList1"
+  nRPCI: 1
+  arfcnDL: 1
+  rimRSMonitoringStartTime: "2024-06-19T20:00:00+00:00"
+  rimRSMonitoringStopTime: "2024-06-19T21:00:00+00:00"
+  rimRSMonitoringWindowDuration: 1
+  rimRSMonitoringWindowStartingOffset: 1
+  rimRSMonitoringWindowPeriodicity: 1
+  rimRSMonitoringOccasionInterval: 1
+  rimRSMonitoringOccasionStartingOffset: 0
+  ssbFrequency: 1
+  ssbPeriodicity: 5
+  ssbSubCarrierSpacing: 15
+  ssbOffset: 1
+  ssbDuration: 1
+  nRSectorCarrierRef:
+    - "CN=NR-Sector-Carrier-001"
+  victimSetRef: "CN=Victim-Set-001"
+  aggressorSetRef: "CN=Aggressor-Set-001"
+
+
+dus:
+  - name: o-du-pynts-1123
+  - name: o-du-pynts-1122
+
+
+# NTS NG settings
+pyntsSim:
+  endpointCount: 1
+  netconf:
+    port: 830
+    username: netconf
+    password: netconf!
+
+  odu:
+    callhomePort: 4335
+
+  sdnc:
+    url: http://sdnc.onap:8282
+    username: admin
+    password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+
+  ves:
+    url: http://dcae-ves-collector.onap:8080/eventListener/v7
+    username: sample1
+    password: sample1
+    eventLogMsgDetail: LONG
+
+  tls:
+    listenEndpoint: false
+    callHomeEndpoint: false
+  ssh:
+    listenEndpoint: true
+    callHomeEndpoint: false
+
+
+  tlsConnections: 1
+  ntsHostBasePort: 50000
+  ntsHostNetconfSshBasePort: 0
+  ntsHostNetconfTlsBasePort: 1000
+  ntsHostTransferFtpBasePort: 2000
+  ntsHostTransferSftpBasePort: 2000
+  ntsNfMountPointAddressingMethod: docker-mapping
+
+  sdnControllerProtocol: http
+  sdnControllerCallHomeAddress: sdnc-callhome.onap
+  sdnControllerCallHomePort: 4334
+  sdnControllerUsername: admin
+  sdnControllerPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+  sdnControllerPort: 8282
+  sdnControllerAddress: sdnc.onap
+
+  vesCommonHeaderVersion: 7.2.1
+  vesEndpointProtocol: https
+  vesEndpointAddress: dcae-ves-collector.onap/
+  vesEndpointPort: 8080
+  vesEndpointAuthMethod: basic-auth
+  vesEndpointUsername: sample1
+  vesEndpointPassword: sample1
+
+  ntsNfStandaloneStartFeatures: datastore-populate ves-heartbeat ves-file-ready ves-pnf-registration web-cut-through
index 4aa848f..b45089e 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright © 2021-2022 AT&T Intellectual Property
+# Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -27,3 +28,8 @@ dependencies:
     version: ~1.0.0
     repository: "@local"
     condition: ru-du-simulators.duSimulator
+
+  - name: du-simulator-pynts
+    version: ~1.0.0
+    repository: "@local"
+    condition: ru-du-simulators.duSimulatorPynts
index 68234ef..03e02e4 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright © 2021-2022 AT&T Intellectual Property
+# Copyright (C) 2025 OpenInfra Foundation Europe. All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,3 +17,4 @@ ru-du-simulators:
   topologyServer: true
   ruSimulator: true
   duSimulator: true
+  duSimulatorPynts: false