[CORD-1685] Adding copyright

Change-Id: I721b33869e3bb82279e4f830332c061710831985
diff --git a/build-images-playbook.yml b/build-images-playbook.yml
index baea468..93f1e59 100644
--- a/build-images-playbook.yml
+++ b/build-images-playbook.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # build-images-playbook.yml
 
diff --git a/build-xos-playbook.yml b/build-xos-playbook.yml
index d097b74..a6cc5f7 100644
--- a/build-xos-playbook.yml
+++ b/build-xos-playbook.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # build-xos-playbook.yml
 
diff --git a/build.gradle b/build.gradle
index 324c550..66a0dff 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 import org.yaml.snakeyaml.Yaml
 
 ext {
diff --git a/containers/chameleon/Dockerfile.chameleon b/containers/chameleon/Dockerfile.chameleon
index f5fb70c..7d69ed8 100644
--- a/containers/chameleon/Dockerfile.chameleon
+++ b/containers/chameleon/Dockerfile.chameleon
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # xosproject/chameleon
 FROM xosproject/xos-base:candidate
 
diff --git a/containers/xos/Dockerfile.UI b/containers/xos/Dockerfile.UI
index f494397..7734eb5 100644
--- a/containers/xos/Dockerfile.UI
+++ b/containers/xos/Dockerfile.UI
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # xosproject/xos-ui
 FROM xosproject/xos:candidate
 
diff --git a/containers/xos/Dockerfile.base b/containers/xos/Dockerfile.base
index e2dfd9b..4f92d63 100644
--- a/containers/xos/Dockerfile.base
+++ b/containers/xos/Dockerfile.base
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # Dockerfile.base
 # This image isn't used, but installs the prereqs for the other XOS images
 FROM ubuntu:14.04.5
diff --git a/containers/xos/Dockerfile.client b/containers/xos/Dockerfile.client
index a31c312..338e3ff 100644
--- a/containers/xos/Dockerfile.client
+++ b/containers/xos/Dockerfile.client
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # xosproject/xos-client
 FROM xosproject/xos-libraries:candidate
 
diff --git a/containers/xos/Dockerfile.corebuilder b/containers/xos/Dockerfile.corebuilder
index 8db5d34..7cf3a34 100644
--- a/containers/xos/Dockerfile.corebuilder
+++ b/containers/xos/Dockerfile.corebuilder
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # xosproject/xos-corebuilder
 FROM xosproject/xos-libraries:candidate
 
diff --git a/containers/xos/Dockerfile.libraries b/containers/xos/Dockerfile.libraries
index e56361f..67c64c4 100644
--- a/containers/xos/Dockerfile.libraries
+++ b/containers/xos/Dockerfile.libraries
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 FROM xosproject/xos-base:candidate
 
 # Add libraries
diff --git a/containers/xos/Dockerfile.synchronizer-base b/containers/xos/Dockerfile.synchronizer-base
index e761e5b..17eaea7 100644
--- a/containers/xos/Dockerfile.synchronizer-base
+++ b/containers/xos/Dockerfile.synchronizer-base
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # xosproject/xos-synchronizer-base
 FROM xosproject/xos-client:candidate
 
diff --git a/containers/xos/Dockerfile.test b/containers/xos/Dockerfile.test
index 36edcbc..6141602 100644
--- a/containers/xos/Dockerfile.test
+++ b/containers/xos/Dockerfile.test
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # xosproject/xos-test
 FROM xosproject/xos:candidate
 
diff --git a/containers/xos/Dockerfile.xos b/containers/xos/Dockerfile.xos
index 5b1d176..b24da68 100644
--- a/containers/xos/Dockerfile.xos
+++ b/containers/xos/Dockerfile.xos
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # xosproject/xos
 FROM xosproject/xos-libraries:candidate
 
diff --git a/lib/xos-config/setup.py b/lib/xos-config/setup.py
index a3e33fc..f14ef8a 100644
--- a/lib/xos-config/setup.py
+++ b/lib/xos-config/setup.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 from setuptools import setup
diff --git a/lib/xos-config/tests/__init__.py b/lib/xos-config/tests/__init__.py
index e69de29..d4e8062 100644
--- a/lib/xos-config/tests/__init__.py
+++ b/lib/xos-config/tests/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/lib/xos-config/tests/config_test.py b/lib/xos-config/tests/config_test.py
index 36869b3..a3a89de 100644
--- a/lib/xos-config/tests/config_test.py
+++ b/lib/xos-config/tests/config_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from mock import patch
 import os
diff --git a/lib/xos-config/tests/confs/basic_conf.yaml b/lib/xos-config/tests/confs/basic_conf.yaml
index 4337b6c..f06e440 100644
--- a/lib/xos-config/tests/confs/basic_conf.yaml
+++ b/lib/xos-config/tests/confs/basic_conf.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 name: test
 database:
   name: xos
diff --git a/lib/xos-config/tests/confs/invalid_format.yaml b/lib/xos-config/tests/confs/invalid_format.yaml
index 1972c5b..0e3e630 100644
--- a/lib/xos-config/tests/confs/invalid_format.yaml
+++ b/lib/xos-config/tests/confs/invalid_format.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 - I am
 - a yaml
 - but the
diff --git a/lib/xos-config/tests/confs/sample_conf.yaml b/lib/xos-config/tests/confs/sample_conf.yaml
index b9867ed..3e08f03 100644
--- a/lib/xos-config/tests/confs/sample_conf.yaml
+++ b/lib/xos-config/tests/confs/sample_conf.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 name: xos-core
 database:
   name: xos
diff --git a/lib/xos-config/tests/confs/yaml_not_valid.yaml b/lib/xos-config/tests/confs/yaml_not_valid.yaml
index a06cd5b..549113a 100644
--- a/lib/xos-config/tests/confs/yaml_not_valid.yaml
+++ b/lib/xos-config/tests/confs/yaml_not_valid.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 i am:
   not:
   - a valid
diff --git a/lib/xos-config/tests/schemas/small_schema.yaml b/lib/xos-config/tests/schemas/small_schema.yaml
index 4afbd92..439ad2d 100644
--- a/lib/xos-config/tests/schemas/small_schema.yaml
+++ b/lib/xos-config/tests/schemas/small_schema.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 map:
   name:
     type: str
diff --git a/lib/xos-config/xosconfig/__init__.py b/lib/xos-config/xosconfig/__init__.py
index 3558f42..b7ad3d8 100644
--- a/lib/xos-config/xosconfig/__init__.py
+++ b/lib/xos-config/xosconfig/__init__.py
@@ -1 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from .config import Config
\ No newline at end of file
diff --git a/lib/xos-config/xosconfig/config.py b/lib/xos-config/xosconfig/config.py
index 911e286..ff221a9 100644
--- a/lib/xos-config/xosconfig/config.py
+++ b/lib/xos-config/xosconfig/config.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 import yaml
diff --git a/lib/xos-config/xosconfig/default.py b/lib/xos-config/xosconfig/default.py
index 2068c13..70fa656 100644
--- a/lib/xos-config/xosconfig/default.py
+++ b/lib/xos-config/xosconfig/default.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 DEFAULT_VALUES = {
     'xos_dir': '/opt/xos',
     'logging': {
diff --git a/lib/xos-config/xosconfig/synchronizer-config-schema.yaml b/lib/xos-config/xosconfig/synchronizer-config-schema.yaml
index b4c94b3..ae7b83c 100644
--- a/lib/xos-config/xosconfig/synchronizer-config-schema.yaml
+++ b/lib/xos-config/xosconfig/synchronizer-config-schema.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 map:
   name:
     type: str
diff --git a/lib/xos-config/xosconfig/xos-config-schema.yaml b/lib/xos-config/xosconfig/xos-config-schema.yaml
index 02516b6..0319836 100644
--- a/lib/xos-config/xosconfig/xos-config-schema.yaml
+++ b/lib/xos-config/xosconfig/xos-config-schema.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 map:
   name:
     type: str
diff --git a/lib/xos-genx/setup.py b/lib/xos-genx/setup.py
index bc1abc9..7aaa9bc 100644
--- a/lib/xos-genx/setup.py
+++ b/lib/xos-genx/setup.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 from setuptools import setup
diff --git a/lib/xos-genx/tests/__init__.py b/lib/xos-genx/tests/__init__.py
index e69de29..d4e8062 100644
--- a/lib/xos-genx/tests/__init__.py
+++ b/lib/xos-genx/tests/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/lib/xos-genx/tests/attics/xosmodel_bottom.py b/lib/xos-genx/tests/attics/xosmodel_bottom.py
index d71c506..8e28718 100644
--- a/lib/xos-genx/tests/attics/xosmodel_bottom.py
+++ b/lib/xos-genx/tests/attics/xosmodel_bottom.py
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def bottom():
     return 'bottom'
\ No newline at end of file
diff --git a/lib/xos-genx/tests/attics/xosmodel_header.py b/lib/xos-genx/tests/attics/xosmodel_header.py
index cafc869..044eb4e 100644
--- a/lib/xos-genx/tests/attics/xosmodel_header.py
+++ b/lib/xos-genx/tests/attics/xosmodel_header.py
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def header():
     return 'header'
\ No newline at end of file
diff --git a/lib/xos-genx/tests/attics/xosmodel_model.py b/lib/xos-genx/tests/attics/xosmodel_model.py
index 78e3e63..ca48b14 100644
--- a/lib/xos-genx/tests/attics/xosmodel_model.py
+++ b/lib/xos-genx/tests/attics/xosmodel_model.py
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def model():
     return 'model'
\ No newline at end of file
diff --git a/lib/xos-genx/tests/attics/xosmodel_top.py b/lib/xos-genx/tests/attics/xosmodel_top.py
index 93dbd0d..2d0adcb 100644
--- a/lib/xos-genx/tests/attics/xosmodel_top.py
+++ b/lib/xos-genx/tests/attics/xosmodel_top.py
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def top():
     return 'top'
\ No newline at end of file
diff --git a/lib/xos-genx/tests/django_generator_test.py b/lib/xos-genx/tests/django_generator_test.py
index 08997b7..914c4a3 100644
--- a/lib/xos-genx/tests/django_generator_test.py
+++ b/lib/xos-genx/tests/django_generator_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 import os
 from xosgenx.generator import XOSGenerator
diff --git a/lib/xos-genx/tests/field_graph_test.py b/lib/xos-genx/tests/field_graph_test.py
index ea3d52d..f7f004c 100644
--- a/lib/xos-genx/tests/field_graph_test.py
+++ b/lib/xos-genx/tests/field_graph_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.jinja2_extensions import FieldNotFound
 from helpers import FakeArgs, OUTPUT_DIR, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/general_security_test.py b/lib/xos-genx/tests/general_security_test.py
index 1201baa..252cb61 100644
--- a/lib/xos-genx/tests/general_security_test.py
+++ b/lib/xos-genx/tests/general_security_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/general_validation_test.py b/lib/xos-genx/tests/general_validation_test.py
index 15cdb56..fbed567 100644
--- a/lib/xos-genx/tests/general_validation_test.py
+++ b/lib/xos-genx/tests/general_validation_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/graph_test.py b/lib/xos-genx/tests/graph_test.py
index cc03c56..48978e9 100644
--- a/lib/xos-genx/tests/graph_test.py
+++ b/lib/xos-genx/tests/graph_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/helpers.py b/lib/xos-genx/tests/helpers.py
index 02877a3..232cae1 100644
--- a/lib/xos-genx/tests/helpers.py
+++ b/lib/xos-genx/tests/helpers.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 
 # Constants
diff --git a/lib/xos-genx/tests/optimize_test.py b/lib/xos-genx/tests/optimize_test.py
index 0d2c1b1..e31deb8 100644
--- a/lib/xos-genx/tests/optimize_test.py
+++ b/lib/xos-genx/tests/optimize_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.jinja2_extensions.fol2 import FOL2Python
 
diff --git a/lib/xos-genx/tests/package_test.py b/lib/xos-genx/tests/package_test.py
index a20295b..127fc07 100644
--- a/lib/xos-genx/tests/package_test.py
+++ b/lib/xos-genx/tests/package_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 import os
 from xosgenx.generator import XOSGenerator
diff --git a/lib/xos-genx/tests/parse_test.py b/lib/xos-genx/tests/parse_test.py
index d8d4edc..88c7372 100644
--- a/lib/xos-genx/tests/parse_test.py
+++ b/lib/xos-genx/tests/parse_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/policy_test.py b/lib/xos-genx/tests/policy_test.py
index 5bc3511..3ff700b 100644
--- a/lib/xos-genx/tests/policy_test.py
+++ b/lib/xos-genx/tests/policy_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/pure_proto_test.py b/lib/xos-genx/tests/pure_proto_test.py
index 1f165fb..511682e 100644
--- a/lib/xos-genx/tests/pure_proto_test.py
+++ b/lib/xos-genx/tests/pure_proto_test.py
@@ -1,4 +1,20 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/rlinks_test.py b/lib/xos-genx/tests/rlinks_test.py
index 0c7029a..b195249 100644
--- a/lib/xos-genx/tests/rlinks_test.py
+++ b/lib/xos-genx/tests/rlinks_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/target_test.py b/lib/xos-genx/tests/target_test.py
index 4a244b3..b45f5ed 100644
--- a/lib/xos-genx/tests/target_test.py
+++ b/lib/xos-genx/tests/target_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 import os
 from xosgenx.generator import XOSGenerator
diff --git a/lib/xos-genx/tests/test_cli.py b/lib/xos-genx/tests/test_cli.py
index 6e76073..89935bc 100644
--- a/lib/xos-genx/tests/test_cli.py
+++ b/lib/xos-genx/tests/test_cli.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 import os
 from mock import patch
diff --git a/lib/xos-genx/tests/test_generator.py b/lib/xos-genx/tests/test_generator.py
index d44eec1..0e7e337 100644
--- a/lib/xos-genx/tests/test_generator.py
+++ b/lib/xos-genx/tests/test_generator.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 import os
 from helpers import FakeArgs, OUTPUT_DIR
diff --git a/lib/xos-genx/tests/translator_test.py b/lib/xos-genx/tests/translator_test.py
index fad4dba..f936113 100644
--- a/lib/xos-genx/tests/translator_test.py
+++ b/lib/xos-genx/tests/translator_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 import os
 from xosgenx.generator import XOSGenerator
diff --git a/lib/xos-genx/tests/xos_security_test.py b/lib/xos-genx/tests/xos_security_test.py
index e6d2c6c..a07bc7b 100644
--- a/lib/xos-genx/tests/xos_security_test.py
+++ b/lib/xos-genx/tests/xos_security_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/tests/xos_validation_test.py b/lib/xos-genx/tests/xos_validation_test.py
index 7e70ede..69dafc5 100644
--- a/lib/xos-genx/tests/xos_validation_test.py
+++ b/lib/xos-genx/tests/xos_validation_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from xosgenx.generator import XOSGenerator
 from helpers import FakeArgs, XProtoTestHelpers
diff --git a/lib/xos-genx/xosgenx/__init__.py b/lib/xos-genx/xosgenx/__init__.py
index e69de29..d4e8062 100644
--- a/lib/xos-genx/xosgenx/__init__.py
+++ b/lib/xos-genx/xosgenx/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/lib/xos-genx/xosgenx/generator.py b/lib/xos-genx/xosgenx/generator.py
index 8a4e1a8..1fd6d57 100755
--- a/lib/xos-genx/xosgenx/generator.py
+++ b/lib/xos-genx/xosgenx/generator.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import plyxproto.parser as plyxproto
 import jinja2
 import os
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/__init__.py b/lib/xos-genx/xosgenx/jinja2_extensions/__init__.py
index ad03907..79af1ec 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/__init__.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/__init__.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from .django import *
 from .base import *
 from .fol2 import *
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/base.py b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
index 40afa48..84f0a97 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/base.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import pdb
 import re
 from pattern import en
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/django.py b/lib/xos-genx/xosgenx/jinja2_extensions/django.py
index 4b0af16..6b7f372 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/django.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/django.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from base import *
 import pdb
 
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/fol2.py b/lib/xos-genx/xosgenx/jinja2_extensions/fol2.py
index 4552d59..fefa24c 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/fol2.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/fol2.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import astunparse
 import ast
 import random
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/gui.py b/lib/xos-genx/xosgenx/jinja2_extensions/gui.py
index 25342d2..7c65388 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/gui.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/gui.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from base import xproto_string_type, unquote
 
 def xproto_type_to_ui_type(f):
diff --git a/lib/xos-genx/xosgenx/proto2xproto.py b/lib/xos-genx/xosgenx/proto2xproto.py
index ffdb5d1..964ff15 100644
--- a/lib/xos-genx/xosgenx/proto2xproto.py
+++ b/lib/xos-genx/xosgenx/proto2xproto.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import plyxproto.model as m
 from plyxproto.helpers import Visitor
 import pdb
diff --git a/lib/xos-genx/xosgenx/xos2jinja.py b/lib/xos-genx/xosgenx/xos2jinja.py
index efcb995..42e83c3 100644
--- a/lib/xos-genx/xosgenx/xos2jinja.py
+++ b/lib/xos-genx/xosgenx/xos2jinja.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import plyxproto.model as m
 from plyxproto.helpers import Visitor
 import argparse
diff --git a/lib/xos-genx/xosgenx/xosgen.py b/lib/xos-genx/xosgenx/xosgen.py
index 349ca57..7893f22 100755
--- a/lib/xos-genx/xosgenx/xosgen.py
+++ b/lib/xos-genx/xosgenx/xosgen.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/python
 
 import argparse
diff --git a/publish-images-playbook.yml b/publish-images-playbook.yml
index 98bf874..41119c9 100644
--- a/publish-images-playbook.yml
+++ b/publish-images-playbook.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # publish-xos-playbook.yml
 
diff --git a/publish-xos-playbook.yml b/publish-xos-playbook.yml
index 434e3ed..e4f261b 100644
--- a/publish-xos-playbook.yml
+++ b/publish-xos-playbook.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # publish-xos-playbook.yml
 
diff --git a/pull-images-playbook.yml b/pull-images-playbook.yml
index 845fe5a..2727898 100644
--- a/pull-images-playbook.yml
+++ b/pull-images-playbook.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # pull-images-playbook.yml
 
diff --git a/pull-xos-playbook.yml b/pull-xos-playbook.yml
index f09ed2d..5b93867 100644
--- a/pull-xos-playbook.yml
+++ b/pull-xos-playbook.yml
@@ -1,3 +1,20 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
 ---
 # pull-xos-playbook.yml
 
diff --git a/roles/build-images/tasks/main.yml b/roles/build-images/tasks/main.yml
index 7abaac4..212d567 100644
--- a/roles/build-images/tasks/main.yml
+++ b/roles/build-images/tasks/main.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # build-images/tasks/main.yml
 
diff --git a/roles/publish-images/tasks/main.yml b/roles/publish-images/tasks/main.yml
index 4878c1c..52b95e0 100644
--- a/roles/publish-images/tasks/main.yml
+++ b/roles/publish-images/tasks/main.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # publish-xos-docker-images/tasks/main.yml
 
diff --git a/roles/pull-images/tasks/main.yml b/roles/pull-images/tasks/main.yml
index 4e9271d..688c2d2 100644
--- a/roles/pull-images/tasks/main.yml
+++ b/roles/pull-images/tasks/main.yml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 # pull-images/tasks/main.yml
 
diff --git a/scripts/add_copyright.py b/scripts/add_copyright.py
new file mode 100644
index 0000000..0304992
--- /dev/null
+++ b/scripts/add_copyright.py
@@ -0,0 +1,263 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+import sys
+import os
+
+COPYRIGHTS = {
+    "slash": """
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+""",
+    "hash": """
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+""",
+    "html": """
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+""",
+    "jinja": """
+{#
+Copyright 2017-present Open Networking Foundation
+
+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.
+#}
+""",
+    "ini": """
+;Copyright 2017-present Open Networking Foundation
+;
+;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.
+""",
+}
+
+EXT_MAPPING = {
+    ".js": COPYRIGHTS["slash"],
+    ".ts": COPYRIGHTS["slash"],
+    ".scss": COPYRIGHTS["slash"],
+    ".css": COPYRIGHTS["slash"],
+    ".gradle": COPYRIGHTS["slash"],
+
+    "docker": COPYRIGHTS["hash"],
+    ".py": COPYRIGHTS["hash"],
+    ".model": COPYRIGHTS["hash"], # attic files
+    ".sh": COPYRIGHTS["hash"],
+    ".yaml": COPYRIGHTS["hash"],
+    ".yml": COPYRIGHTS["hash"],
+    ".m4": COPYRIGHTS["hash"],
+    ".sql": COPYRIGHTS["hash"],
+
+    ".html": COPYRIGHTS["html"],
+    ".j2": COPYRIGHTS["jinja"],
+    ".ini": COPYRIGHTS["ini"],
+}
+
+def get_copyright(file):
+    name, ext = os.path.splitext(file)
+
+    if "Dockerfile" in name:
+        return EXT_MAPPING["docker"]
+    try:
+        return EXT_MAPPING[ext]
+    except KeyError, e:
+        print "Missing copyright for file of type: %s" % ext
+        return None
+
+def add_copyright(file):
+    with open(file, 'r') as original: data = original.read()
+    if not "Copyright 2017-present Open Networking Foundation" in data:
+        print "Adding copyright to: %s" % file
+
+        copy = get_copyright(file)
+        if copy:
+            with open(file, 'w') as modified: modified.write(copy + "\n\n" + data)
+    return
+
+def get_files_ignore_by_git(root):
+    # NOTE this is not perfect, some file will still be copyrighted, but we save some time
+    if root == ".gitignore":
+        gitignore = root
+    else:
+        gitignore = os.path.join(root, ".gitignore")
+
+    exclusion_list = []
+    if os.path.exists(gitignore):
+        for line in open(gitignore).readlines():
+            if not "#" in line:
+                line = line.strip()
+                if line.endswith("/"):
+                    line = line.replace("/", "")
+                exclusion_list.append(line)
+    return exclusion_list
+
+def should_skip(entry):
+
+    # do not skip directories
+    if os.path.isdir(entry):
+        return False
+
+    if "LICENSE.txt" in entry \
+    or ".git" in entry \
+    or ".idea" in entry:
+        return True
+
+    name, ext = os.path.splitext(entry)
+    if not ext or ext == "" \
+    or ext ==".pyc" \
+    or ext == ".txt" \
+    or ext == ".in" \
+    or ext == ".crt" \
+    or ext == ".unused" \
+    or ext == ".list" \
+    or ext == ".README" \
+    or ext == ".json" \
+    or ext == ".log" \
+    or ext == ".asc" \
+    or ext == ".dot" \
+    or ext == ".do" \
+    or ext == ".template" \
+    or ext == ".svg" \
+    or ext == ".ttf" \
+    or ext == ".woff" \
+    or ext == ".woof2" \
+    or ext == ".eot" \
+    or ext == ".md" \
+    or ext == ".png" \
+    or ext == ".PNG" \
+    or ext == ".jpg" \
+    or ext == ".gif" \
+    or ext == ".ico" \
+    or ext == ".conf"\
+    or ext == ".key" \
+    or ext == ".proto" \
+    or ext == ".xproto" \
+    or ext == ".xtarget" \
+    or ext == ".otf" \
+    or ext == ".desc":
+        return True
+    return False
+
+def recursive_iterate_dirs(source, apply_copyright=True):
+    # print "Iteranting on: %s" % source
+    # skipping files in the gitignore
+    gitignored = get_files_ignore_by_git(source)
+    entries = []
+    for entry in os.listdir(source):
+
+        if entry in gitignored:
+            # print "Skipping because gitignored: %s" % entry
+            continue
+
+        entry = os.path.join(source, entry)
+        if should_skip(entry):
+            # print "Skipping: %s" % entry
+            continue
+
+        if os.path.isdir(entry):
+            entries.append(recursive_iterate_dirs(entry, apply_copyright))
+        elif os.path.isfile(entry):
+            entries.append(entry)
+            if apply_copyright is True:
+                add_copyright(entry)
+    return entries
+
+def flatten(aList):
+    t = []
+    for i in aList:
+        if not isinstance(i, list):
+             t.append(i)
+        else:
+             t.extend(flatten(i))
+    return t
+
+def list_file_types(source):
+    file_types = []
+    files = flatten(recursive_iterate_dirs(source, apply_copyright=False))
+    for entry in files:
+        name, ext = os.path.splitext(entry)
+        if not ext in file_types:
+            file_types.append(ext)
+    print file_types
+
+def main():
+    if len(sys.argv) < 2:
+        raise Exception("You must provide a path to the source folder as arguments to the script")
+    source_root = os.path.abspath(os.path.join(os.getcwd(), sys.argv[1]))
+    if not os.path.exists(source_root):
+        raise Exception("You must provide an existing the source folder")
+    if len(sys.argv) == 3:
+        list_file_types(source_root)
+    else:
+        recursive_iterate_dirs(source_root)
+
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/scripts/get_current_gerrit_ids.sh b/scripts/get_current_gerrit_ids.sh
new file mode 100644
index 0000000..9eb8c03
--- /dev/null
+++ b/scripts/get_current_gerrit_ids.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+# USAGE
+# from the XOS folder: repo forall -c "bash $PWD/scripts/get_current_gerrit_ids.sh"
+
+CHANGE_ID=$(git log -1 | grep Change-Id | cut -c16-)
+
+CHANGE_NUMBER=$(curl -s https://gerrit.opencord.org/changes/$CHANGE_ID | tail -n +2 | jq ._number)
+
+echo $(basename `pwd`):$CHANGE_NUMBER
\ No newline at end of file
diff --git a/scripts/setup_venv.sh b/scripts/setup_venv.sh
index 479c374..b0b045b 100644
--- a/scripts/setup_venv.sh
+++ b/scripts/setup_venv.sh
@@ -1,5 +1,19 @@
 #!/bin/bash
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
 BASEDIR=$(pwd)
 REQUIREMENTS=$BASEDIR/containers/xos/pip_requirements.txt
 VENVDIR=venv-xos
diff --git a/views/env/sample-config.js b/views/env/sample-config.js
index 05809f0..7eb6206 100644
--- a/views/env/sample-config.js
+++ b/views/env/sample-config.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // This is a default configuration for your development environment.
 // You can duplicate this configuration for any of your Backend Environments.
 // Different configurations are loaded setting a NODE_ENV variable that contain the config file name.
diff --git a/views/ngXosLib/generator-xos/app/index.js b/views/ngXosLib/generator-xos/app/index.js
index 72c6f56..f17ad3c 100755
--- a/views/ngXosLib/generator-xos/app/index.js
+++ b/views/ngXosLib/generator-xos/app/index.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var generators = require('yeoman-generator');
diff --git a/views/ngXosLib/generator-xos/app/templates/gulp/build.js b/views/ngXosLib/generator-xos/app/templates/gulp/build.js
index 6eb20af..8560e7c 100644
--- a/views/ngXosLib/generator-xos/app/templates/gulp/build.js
+++ b/views/ngXosLib/generator-xos/app/templates/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosLib/generator-xos/app/templates/gulp/server.js b/views/ngXosLib/generator-xos/app/templates/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosLib/generator-xos/app/templates/gulp/server.js
+++ b/views/ngXosLib/generator-xos/app/templates/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosLib/generator-xos/app/templates/gulpfile.js b/views/ngXosLib/generator-xos/app/templates/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosLib/generator-xos/app/templates/gulpfile.js
+++ b/views/ngXosLib/generator-xos/app/templates/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosLib/generator-xos/app/templates/karma.conf.js b/views/ngXosLib/generator-xos/app/templates/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosLib/generator-xos/app/templates/karma.conf.js
+++ b/views/ngXosLib/generator-xos/app/templates/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosLib/generator-xos/app/templates/spec/sample.test.js b/views/ngXosLib/generator-xos/app/templates/spec/sample.test.js
index b00fa5e..ee1f55d 100644
--- a/views/ngXosLib/generator-xos/app/templates/spec/sample.test.js
+++ b/views/ngXosLib/generator-xos/app/templates/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The User List', () => {
diff --git a/views/ngXosLib/generator-xos/app/templates/src/css/dev.css b/views/ngXosLib/generator-xos/app/templates/src/css/dev.css
index d7bc2d9..87e0d9f 100644
--- a/views/ngXosLib/generator-xos/app/templates/src/css/dev.css
+++ b/views/ngXosLib/generator-xos/app/templates/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xos<%=fileName%>{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosLib/generator-xos/app/templates/src/index.html b/views/ngXosLib/generator-xos/app/templates/src/index.html
index 504bc7c..b45e4c4 100644
--- a/views/ngXosLib/generator-xos/app/templates/src/index.html
+++ b/views/ngXosLib/generator-xos/app/templates/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <!-- endbower -->
diff --git a/views/ngXosLib/generator-xos/app/templates/src/js/main.js b/views/ngXosLib/generator-xos/app/templates/src/js/main.js
index 803f344..1909cce 100644
--- a/views/ngXosLib/generator-xos/app/templates/src/js/main.js
+++ b/views/ngXosLib/generator-xos/app/templates/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.<%= name %>', [
diff --git a/views/ngXosLib/generator-xos/app/templates/src/sass/main.scss b/views/ngXosLib/generator-xos/app/templates/src/sass/main.scss
index 6f8a791..0f77e0a 100644
--- a/views/ngXosLib/generator-xos/app/templates/src/sass/main.scss
+++ b/views/ngXosLib/generator-xos/app/templates/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xos<%=fileName%> {
diff --git a/views/ngXosLib/generator-xos/app/templates/src/templates/users-list.tpl.html b/views/ngXosLib/generator-xos/app/templates/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosLib/generator-xos/app/templates/src/templates/users-list.tpl.html
+++ b/views/ngXosLib/generator-xos/app/templates/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosLib/generator-xos/test/build.spec.js b/views/ngXosLib/generator-xos/test/build.spec.js
index e2f6b49..dd9dc93 100644
--- a/views/ngXosLib/generator-xos/test/build.spec.js
+++ b/views/ngXosLib/generator-xos/test/build.spec.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 var path = require('path');
 var helpers = require('yeoman-test');
diff --git a/views/ngXosLib/generator-xos/test/generator.spec.js b/views/ngXosLib/generator-xos/test/generator.spec.js
index 78ed005..54c28b5 100644
--- a/views/ngXosLib/generator-xos/test/generator.spec.js
+++ b/views/ngXosLib/generator-xos/test/generator.spec.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 const path = require('path');
diff --git a/views/ngXosLib/gulp/ngXosHelpers.js b/views/ngXosLib/gulp/ngXosHelpers.js
index 3d935e0..03c2e40 100644
--- a/views/ngXosLib/gulp/ngXosHelpers.js
+++ b/views/ngXosLib/gulp/ngXosHelpers.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 var gulp = require('gulp');
 var uglify = require('gulp-uglify');
 var concat = require('gulp-concat');
diff --git a/views/ngXosViews/UITutorial/gulp/build.js b/views/ngXosViews/UITutorial/gulp/build.js
index ed8eb07..a708d97 100644
--- a/views/ngXosViews/UITutorial/gulp/build.js
+++ b/views/ngXosViews/UITutorial/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/UITutorial/gulp/server.js b/views/ngXosViews/UITutorial/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/UITutorial/gulp/server.js
+++ b/views/ngXosViews/UITutorial/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/UITutorial/gulpfile.js b/views/ngXosViews/UITutorial/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/UITutorial/gulpfile.js
+++ b/views/ngXosViews/UITutorial/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/UITutorial/karma.conf.js b/views/ngXosViews/UITutorial/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/UITutorial/karma.conf.js
+++ b/views/ngXosViews/UITutorial/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/UITutorial/spec/errorHandler.test.js b/views/ngXosViews/UITutorial/spec/errorHandler.test.js
index 3f46330..b2bcfce 100644
--- a/views/ngXosViews/UITutorial/spec/errorHandler.test.js
+++ b/views/ngXosViews/UITutorial/spec/errorHandler.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The ErrorHandler service', () => {
diff --git a/views/ngXosViews/UITutorial/spec/exploreCmd.test.js b/views/ngXosViews/UITutorial/spec/exploreCmd.test.js
index a5d7cfe..749250e 100644
--- a/views/ngXosViews/UITutorial/spec/exploreCmd.test.js
+++ b/views/ngXosViews/UITutorial/spec/exploreCmd.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The ExploreCmd service', () => {
diff --git a/views/ngXosViews/UITutorial/spec/responseHandler.test.js b/views/ngXosViews/UITutorial/spec/responseHandler.test.js
index 4ce26be..929840d 100644
--- a/views/ngXosViews/UITutorial/spec/responseHandler.test.js
+++ b/views/ngXosViews/UITutorial/spec/responseHandler.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The ResponseHandler service', () => {
diff --git a/views/ngXosViews/UITutorial/spec/shell.test.js b/views/ngXosViews/UITutorial/spec/shell.test.js
index 19ea63e..b857b37 100644
--- a/views/ngXosViews/UITutorial/spec/shell.test.js
+++ b/views/ngXosViews/UITutorial/spec/shell.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The Js Shell directive', () => {
diff --git a/views/ngXosViews/UITutorial/spec/templateHandler.test.js b/views/ngXosViews/UITutorial/spec/templateHandler.test.js
index 0af68b9..ec0ce19 100644
--- a/views/ngXosViews/UITutorial/spec/templateHandler.test.js
+++ b/views/ngXosViews/UITutorial/spec/templateHandler.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The TemplateHandler service', () => {
diff --git a/views/ngXosViews/UITutorial/src/css/dev.css b/views/ngXosViews/UITutorial/src/css/dev.css
index a0d1a33..bbf081a 100644
--- a/views/ngXosViews/UITutorial/src/css/dev.css
+++ b/views/ngXosViews/UITutorial/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosUITutorial{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/UITutorial/src/css/main.css b/views/ngXosViews/UITutorial/src/css/main.css
index cc63179..9b3f039 100644
--- a/views/ngXosViews/UITutorial/src/css/main.css
+++ b/views/ngXosViews/UITutorial/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosUITutorial {
   width: 100%; }
   #xosUITutorial .ace_editor {
diff --git a/views/ngXosViews/UITutorial/src/index.html b/views/ngXosViews/UITutorial/src/index.html
index 17b625b..9a80338 100644
--- a/views/ngXosViews/UITutorial/src/index.html
+++ b/views/ngXosViews/UITutorial/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/UITutorial/src/js/codeToString.js b/views/ngXosViews/UITutorial/src/js/codeToString.js
index b8ae242..5f11262 100644
--- a/views/ngXosViews/UITutorial/src/js/codeToString.js
+++ b/views/ngXosViews/UITutorial/src/js/codeToString.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   angular.module('xos.UITutorial')
   .service('codeToString', function(){
diff --git a/views/ngXosViews/UITutorial/src/js/errorHandler.js b/views/ngXosViews/UITutorial/src/js/errorHandler.js
index aa75d38..61fec84 100644
--- a/views/ngXosViews/UITutorial/src/js/errorHandler.js
+++ b/views/ngXosViews/UITutorial/src/js/errorHandler.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.UITutorial')
diff --git a/views/ngXosViews/UITutorial/src/js/exploreCmd.js b/views/ngXosViews/UITutorial/src/js/exploreCmd.js
index 0aba8fa..ed37af9 100644
--- a/views/ngXosViews/UITutorial/src/js/exploreCmd.js
+++ b/views/ngXosViews/UITutorial/src/js/exploreCmd.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.UITutorial')
diff --git a/views/ngXosViews/UITutorial/src/js/learnCmd.js b/views/ngXosViews/UITutorial/src/js/learnCmd.js
index cb58084..d76b45f 100644
--- a/views/ngXosViews/UITutorial/src/js/learnCmd.js
+++ b/views/ngXosViews/UITutorial/src/js/learnCmd.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.UITutorial')
diff --git a/views/ngXosViews/UITutorial/src/js/lessonsInfo.js b/views/ngXosViews/UITutorial/src/js/lessonsInfo.js
index 7dea0db..c6e6e25 100644
--- a/views/ngXosViews/UITutorial/src/js/lessonsInfo.js
+++ b/views/ngXosViews/UITutorial/src/js/lessonsInfo.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {

   'use strict';

   angular.module('xos.UITutorial')

diff --git a/views/ngXosViews/UITutorial/src/js/main.js b/views/ngXosViews/UITutorial/src/js/main.js
index a686fe6..b47713d 100644
--- a/views/ngXosViews/UITutorial/src/js/main.js
+++ b/views/ngXosViews/UITutorial/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.UITutorial', [
diff --git a/views/ngXosViews/UITutorial/src/js/playCmd.js b/views/ngXosViews/UITutorial/src/js/playCmd.js
index 0ed81c9..f9b143f 100644
--- a/views/ngXosViews/UITutorial/src/js/playCmd.js
+++ b/views/ngXosViews/UITutorial/src/js/playCmd.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.UITutorial')
diff --git a/views/ngXosViews/UITutorial/src/js/responseHandler.js b/views/ngXosViews/UITutorial/src/js/responseHandler.js
index e343dda..2b4ca50 100644
--- a/views/ngXosViews/UITutorial/src/js/responseHandler.js
+++ b/views/ngXosViews/UITutorial/src/js/responseHandler.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.UITutorial')
diff --git a/views/ngXosViews/UITutorial/src/js/templateHandler.js b/views/ngXosViews/UITutorial/src/js/templateHandler.js
index 752b214..049e766 100644
--- a/views/ngXosViews/UITutorial/src/js/templateHandler.js
+++ b/views/ngXosViews/UITutorial/src/js/templateHandler.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.UITutorial')
diff --git a/views/ngXosViews/UITutorial/src/sass/main.scss b/views/ngXosViews/UITutorial/src/sass/main.scss
index a6e8003..47d5d39 100644
--- a/views/ngXosViews/UITutorial/src/sass/main.scss
+++ b/views/ngXosViews/UITutorial/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 // The solarized palette
diff --git a/views/ngXosViews/UITutorial/src/templates/js-shell.tpl.html b/views/ngXosViews/UITutorial/src/templates/js-shell.tpl.html
index aae18db..2e8fee6 100644
--- a/views/ngXosViews/UITutorial/src/templates/js-shell.tpl.html
+++ b/views/ngXosViews/UITutorial/src/templates/js-shell.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div id="shell-panel">
   <div>
     Type <code>help</code> or hit <code>TAB</code> for a list of commands.
diff --git a/views/ngXosViews/ceilometerDashboard/gulp/build.js b/views/ngXosViews/ceilometerDashboard/gulp/build.js
index 1d050fb..6d7d064 100644
--- a/views/ngXosViews/ceilometerDashboard/gulp/build.js
+++ b/views/ngXosViews/ceilometerDashboard/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/ceilometerDashboard/gulp/server.js b/views/ngXosViews/ceilometerDashboard/gulp/server.js
index 607c85d..ede7ccd 100644
--- a/views/ngXosViews/ceilometerDashboard/gulp/server.js
+++ b/views/ngXosViews/ceilometerDashboard/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/ceilometerDashboard/gulpfile.js b/views/ngXosViews/ceilometerDashboard/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/ceilometerDashboard/gulpfile.js
+++ b/views/ngXosViews/ceilometerDashboard/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/ceilometerDashboard/karma.conf.js b/views/ngXosViews/ceilometerDashboard/karma.conf.js
index 242d8b0..e0c8c89 100644
--- a/views/ngXosViews/ceilometerDashboard/karma.conf.js
+++ b/views/ngXosViews/ceilometerDashboard/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/ceilometerDashboard/spec/backend.mock.js b/views/ngXosViews/ceilometerDashboard/spec/backend.mock.js
index 679363b..d86edb5 100644
--- a/views/ngXosViews/ceilometerDashboard/spec/backend.mock.js
+++ b/views/ngXosViews/ceilometerDashboard/spec/backend.mock.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/ceilometerDashboard/spec/ceilometer.test.js b/views/ngXosViews/ceilometerDashboard/spec/ceilometer.test.js
index b9076e1..053481e 100644
--- a/views/ngXosViews/ceilometerDashboard/spec/ceilometer.test.js
+++ b/views/ngXosViews/ceilometerDashboard/spec/ceilometer.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('In Ceilometer View', () => {
diff --git a/views/ngXosViews/ceilometerDashboard/src/css/ceilometerDashboard.css b/views/ngXosViews/ceilometerDashboard/src/css/ceilometerDashboard.css
index 4e6fa88..4d263d5 100644
--- a/views/ngXosViews/ceilometerDashboard/src/css/ceilometerDashboard.css
+++ b/views/ngXosViews/ceilometerDashboard/src/css/ceilometerDashboard.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosCeilometerDashboard{
   position: relative;
 }
diff --git a/views/ngXosViews/ceilometerDashboard/src/css/dev.css b/views/ngXosViews/ceilometerDashboard/src/css/dev.css
index 228d394..7f612a0 100644
--- a/views/ngXosViews/ceilometerDashboard/src/css/dev.css
+++ b/views/ngXosViews/ceilometerDashboard/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @media (min-width: 768px) {
   #xosCeilometerDashboard {
     position: absolute;
diff --git a/views/ngXosViews/ceilometerDashboard/src/css/main.css b/views/ngXosViews/ceilometerDashboard/src/css/main.css
index e69de29..e41be01 100644
--- a/views/ngXosViews/ceilometerDashboard/src/css/main.css
+++ b/views/ngXosViews/ceilometerDashboard/src/css/main.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/views/ngXosViews/ceilometerDashboard/src/index.html b/views/ngXosViews/ceilometerDashboard/src/index.html
index 6360fea..35d50f5 100644
--- a/views/ngXosViews/ceilometerDashboard/src/index.html
+++ b/views/ngXosViews/ceilometerDashboard/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1, max-scale=1">
 <!-- browserSync -->
diff --git a/views/ngXosViews/ceilometerDashboard/src/js/dashboard.directive.js b/views/ngXosViews/ceilometerDashboard/src/js/dashboard.directive.js
index 6a65732..dbf24bc 100644
--- a/views/ngXosViews/ceilometerDashboard/src/js/dashboard.directive.js
+++ b/views/ngXosViews/ceilometerDashboard/src/js/dashboard.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ceilometerDashboard/src/js/main.js b/views/ngXosViews/ceilometerDashboard/src/js/main.js
index 43a8a14..a15a1ed 100644
--- a/views/ngXosViews/ceilometerDashboard/src/js/main.js
+++ b/views/ngXosViews/ceilometerDashboard/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.ceilometerDashboard', [
diff --git a/views/ngXosViews/ceilometerDashboard/src/js/rest.js b/views/ngXosViews/ceilometerDashboard/src/js/rest.js
index bcd582b..b9ccd2e 100644
--- a/views/ngXosViews/ceilometerDashboard/src/js/rest.js
+++ b/views/ngXosViews/ceilometerDashboard/src/js/rest.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ceilometerDashboard/src/js/samples.directive.js b/views/ngXosViews/ceilometerDashboard/src/js/samples.directive.js
index d2f90ea..470667d 100644
--- a/views/ngXosViews/ceilometerDashboard/src/js/samples.directive.js
+++ b/views/ngXosViews/ceilometerDashboard/src/js/samples.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ceilometerDashboard/src/js/stats.directive.js b/views/ngXosViews/ceilometerDashboard/src/js/stats.directive.js
index 7f0b1f8..593dbf3 100644
--- a/views/ngXosViews/ceilometerDashboard/src/js/stats.directive.js
+++ b/views/ngXosViews/ceilometerDashboard/src/js/stats.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ceilometerDashboard/src/sass/main.scss b/views/ngXosViews/ceilometerDashboard/src/sass/main.scss
index b65f4aa..0e07ba3 100644
--- a/views/ngXosViews/ceilometerDashboard/src/sass/main.scss
+++ b/views/ngXosViews/ceilometerDashboard/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosCeilometerDashboard {
diff --git a/views/ngXosViews/ceilometerDashboard/src/templates/accordion-group.html b/views/ngXosViews/ceilometerDashboard/src/templates/accordion-group.html
index 62e0ce9..c17c3f0 100644
--- a/views/ngXosViews/ceilometerDashboard/src/templates/accordion-group.html
+++ b/views/ngXosViews/ceilometerDashboard/src/templates/accordion-group.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="panel {{panelClass || 'panel-default'}}">
   <div class="panel-heading" ng-keypress="toggleOpen($event)">
     <h5>
diff --git a/views/ngXosViews/ceilometerDashboard/src/templates/accordion.html b/views/ngXosViews/ceilometerDashboard/src/templates/accordion.html
index ba428f3..422012c 100644
--- a/views/ngXosViews/ceilometerDashboard/src/templates/accordion.html
+++ b/views/ngXosViews/ceilometerDashboard/src/templates/accordion.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="panel-group" ng-transclude></div>
\ No newline at end of file
diff --git a/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-dashboard.tpl.html b/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-dashboard.tpl.html
index 2805dbd..827f3ad 100644
--- a/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-dashboard.tpl.html
+++ b/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-dashboard.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-sm-10">
     <h3>XOS Monitoring Statistics</h3>
diff --git a/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-samples.tpl.html b/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-samples.tpl.html
index 8df2a29..7d8fb5e 100644
--- a/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-samples.tpl.html
+++ b/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-samples.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- <pre>{{ vm | json}}</pre> -->
 
 <div class="row">
diff --git a/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-stats.tpl.html b/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-stats.tpl.html
index e07a87a..8b359d1 100644
--- a/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-stats.tpl.html
+++ b/views/ngXosViews/ceilometerDashboard/src/templates/ceilometer-stats.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div ng-show="vm.loader" class="loader">Loading</div>
 
 <section ng-if="!vm.loader && !vm.error">
diff --git a/views/ngXosViews/ceilometerDashboard/src/templates/users-list.tpl.html b/views/ngXosViews/ceilometerDashboard/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/ceilometerDashboard/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/ceilometerDashboard/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/contentProvider/gulp/build.js b/views/ngXosViews/contentProvider/gulp/build.js
index b2dd6ca..ccab952 100644
--- a/views/ngXosViews/contentProvider/gulp/build.js
+++ b/views/ngXosViews/contentProvider/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/contentProvider/gulp/server.js b/views/ngXosViews/contentProvider/gulp/server.js
index 27791f5..04b8e83 100644
--- a/views/ngXosViews/contentProvider/gulp/server.js
+++ b/views/ngXosViews/contentProvider/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/contentProvider/gulpfile.js b/views/ngXosViews/contentProvider/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/contentProvider/gulpfile.js
+++ b/views/ngXosViews/contentProvider/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/contentProvider/karma.conf.js b/views/ngXosViews/contentProvider/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/contentProvider/karma.conf.js
+++ b/views/ngXosViews/contentProvider/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/contentProvider/spec/contentprovider.test.js b/views/ngXosViews/contentProvider/spec/contentprovider.test.js
index 10b3b63..3de80d1 100644
--- a/views/ngXosViews/contentProvider/spec/contentprovider.test.js
+++ b/views/ngXosViews/contentProvider/spec/contentprovider.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The Content Provider SPA', () => {
diff --git a/views/ngXosViews/contentProvider/spec/mocks/contentProvider.mock.js b/views/ngXosViews/contentProvider/spec/mocks/contentProvider.mock.js
index 46a0b0e..563c947 100644
--- a/views/ngXosViews/contentProvider/spec/mocks/contentProvider.mock.js
+++ b/views/ngXosViews/contentProvider/spec/mocks/contentProvider.mock.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* eslint-disable key-spacing, no-unused-vars */
 
 var CPmock = {
diff --git a/views/ngXosViews/contentProvider/src/css/dev.css b/views/ngXosViews/contentProvider/src/css/dev.css
index 0ed8b4d..aae7265 100644
--- a/views/ngXosViews/contentProvider/src/css/dev.css
+++ b/views/ngXosViews/contentProvider/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosContentProvider{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/contentProvider/src/css/main.css b/views/ngXosViews/contentProvider/src/css/main.css
index e69de29..e41be01 100644
--- a/views/ngXosViews/contentProvider/src/css/main.css
+++ b/views/ngXosViews/contentProvider/src/css/main.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/views/ngXosViews/contentProvider/src/index.html b/views/ngXosViews/contentProvider/src/index.html
index 703c613..ea255c4 100644
--- a/views/ngXosViews/contentProvider/src/index.html
+++ b/views/ngXosViews/contentProvider/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/contentProvider/src/js/main.js b/views/ngXosViews/contentProvider/src/js/main.js
index e9142bb..2d88298 100644
--- a/views/ngXosViews/contentProvider/src/js/main.js
+++ b/views/ngXosViews/contentProvider/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.contentProvider', [
diff --git a/views/ngXosViews/contentProvider/src/sass/main.scss b/views/ngXosViews/contentProvider/src/sass/main.scss
index e9d81df..c74b0df 100644
--- a/views/ngXosViews/contentProvider/src/sass/main.scss
+++ b/views/ngXosViews/contentProvider/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosContentProvider {
diff --git a/views/ngXosViews/contentProvider/src/templates/cp_actions.html b/views/ngXosViews/contentProvider/src/templates/cp_actions.html
index 8c6ae97..8c092ee 100644
--- a/views/ngXosViews/contentProvider/src/templates/cp_actions.html
+++ b/views/ngXosViews/contentProvider/src/templates/cp_actions.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <a href="#/" class="btn btn-default">
   <i class="icon icon-arrow-left"></i>Back
 </a>
diff --git a/views/ngXosViews/contentProvider/src/templates/cp_cdn_prefix.html b/views/ngXosViews/contentProvider/src/templates/cp_cdn_prefix.html
index 8532e6a..baa5402 100644
--- a/views/ngXosViews/contentProvider/src/templates/cp_cdn_prefix.html
+++ b/views/ngXosViews/contentProvider/src/templates/cp_cdn_prefix.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row-fluid">
   <div class="span6">
     <h1>{$ vm.cp.humanReadableName $}</h1>
diff --git a/views/ngXosViews/contentProvider/src/templates/cp_detail.html b/views/ngXosViews/contentProvider/src/templates/cp_detail.html
index 1ae2299..6b1e78f 100644
--- a/views/ngXosViews/contentProvider/src/templates/cp_detail.html
+++ b/views/ngXosViews/contentProvider/src/templates/cp_detail.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-xs-6">
     <h1>{$ vm.cp.humanReadableName $}</h1>
diff --git a/views/ngXosViews/contentProvider/src/templates/cp_list.html b/views/ngXosViews/contentProvider/src/templates/cp_list.html
index 9c22e8c..950b7b7 100644
--- a/views/ngXosViews/contentProvider/src/templates/cp_list.html
+++ b/views/ngXosViews/contentProvider/src/templates/cp_list.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- <xos-table data="vm.contentProviderList" config="vm.config"/> -->
 
 <table class="table table-striped" ng-show="vm.contentProviderList.length > 0">
diff --git a/views/ngXosViews/contentProvider/src/templates/cp_origin_server.html b/views/ngXosViews/contentProvider/src/templates/cp_origin_server.html
index 49cd175..0ba4b73 100644
--- a/views/ngXosViews/contentProvider/src/templates/cp_origin_server.html
+++ b/views/ngXosViews/contentProvider/src/templates/cp_origin_server.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row-fluid">
   <div class="span6">
     <h1>{$ vm.cp.humanReadableName $}</h1>
diff --git a/views/ngXosViews/contentProvider/src/templates/cp_side_nav.html b/views/ngXosViews/contentProvider/src/templates/cp_side_nav.html
index a2c8633..deaac95 100644
--- a/views/ngXosViews/contentProvider/src/templates/cp_side_nav.html
+++ b/views/ngXosViews/contentProvider/src/templates/cp_side_nav.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <ul class="nav nav-list">
   <li>
     <a class="btn" ng-class="{'btn-primary': vm.pageName == 'detail'}" href="#/contentProvider/{$ vm.cp.id $}">Details</a>
diff --git a/views/ngXosViews/contentProvider/src/templates/cp_user.html b/views/ngXosViews/contentProvider/src/templates/cp_user.html
index 2b82e1c..720f160 100644
--- a/views/ngXosViews/contentProvider/src/templates/cp_user.html
+++ b/views/ngXosViews/contentProvider/src/templates/cp_user.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row-fluid">
   <div class="span6">
     <h1>{$ vm.cp.humanReadableName $}</h1>
diff --git a/views/ngXosViews/contentProvider/src/templates/users-list.tpl.html b/views/ngXosViews/contentProvider/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/contentProvider/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/contentProvider/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/dashboardManager/gulp/build.js b/views/ngXosViews/dashboardManager/gulp/build.js
index df8dcc1..4036e79 100644
--- a/views/ngXosViews/dashboardManager/gulp/build.js
+++ b/views/ngXosViews/dashboardManager/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/dashboardManager/gulp/server.js b/views/ngXosViews/dashboardManager/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/dashboardManager/gulp/server.js
+++ b/views/ngXosViews/dashboardManager/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/dashboardManager/gulpfile.js b/views/ngXosViews/dashboardManager/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/dashboardManager/gulpfile.js
+++ b/views/ngXosViews/dashboardManager/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/dashboardManager/karma.conf.js b/views/ngXosViews/dashboardManager/karma.conf.js
index a10d010..0b66ed8 100644
--- a/views/ngXosViews/dashboardManager/karma.conf.js
+++ b/views/ngXosViews/dashboardManager/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/dashboardManager/spec/sample.test.js b/views/ngXosViews/dashboardManager/spec/sample.test.js
index d71f63e..9f0874f 100644
--- a/views/ngXosViews/dashboardManager/spec/sample.test.js
+++ b/views/ngXosViews/dashboardManager/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // TODO angular-drag-drop is inject in the wrong place, test failing
diff --git a/views/ngXosViews/dashboardManager/src/css/dev.css b/views/ngXosViews/dashboardManager/src/css/dev.css
index 68b909c..54ed1d6 100644
--- a/views/ngXosViews/dashboardManager/src/css/dev.css
+++ b/views/ngXosViews/dashboardManager/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDashboardManager{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/dashboardManager/src/css/main.css b/views/ngXosViews/dashboardManager/src/css/main.css
index ac249e9..1d26161 100644
--- a/views/ngXosViews/dashboardManager/src/css/main.css
+++ b/views/ngXosViews/dashboardManager/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDashboardManager {
   /* DRAG AND DROP STYLING */ }
   #xosDashboardManager .col-xs-10 + .col-xs-2.text-right {
diff --git a/views/ngXosViews/dashboardManager/src/index.html b/views/ngXosViews/dashboardManager/src/index.html
index c62eac8..4476a54 100644
--- a/views/ngXosViews/dashboardManager/src/index.html
+++ b/views/ngXosViews/dashboardManager/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/dashboardManager/src/js/dashboard-form.directive.js b/views/ngXosViews/dashboardManager/src/js/dashboard-form.directive.js
index 674e53d..f82c173 100644
--- a/views/ngXosViews/dashboardManager/src/js/dashboard-form.directive.js
+++ b/views/ngXosViews/dashboardManager/src/js/dashboard-form.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/dashboardManager/src/js/main.js b/views/ngXosViews/dashboardManager/src/js/main.js
index 025e95d..510fa18 100644
--- a/views/ngXosViews/dashboardManager/src/js/main.js
+++ b/views/ngXosViews/dashboardManager/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.dashboardManager', [
diff --git a/views/ngXosViews/dashboardManager/src/js/user-dashboards.directive.js b/views/ngXosViews/dashboardManager/src/js/user-dashboards.directive.js
index 0884e25..b5b00af 100644
--- a/views/ngXosViews/dashboardManager/src/js/user-dashboards.directive.js
+++ b/views/ngXosViews/dashboardManager/src/js/user-dashboards.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   angular.module('xos.dashboardManager')
   .directive('userDashboards', function(){
diff --git a/views/ngXosViews/dashboardManager/src/sass/main.scss b/views/ngXosViews/dashboardManager/src/sass/main.scss
index 4a90b9f..161e4d9 100644
--- a/views/ngXosViews/dashboardManager/src/sass/main.scss
+++ b/views/ngXosViews/dashboardManager/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 @import '../../../../style/sass/bootstrap/bootstrap/_variables.scss';
 
diff --git a/views/ngXosViews/dashboardManager/src/templates/dashboard-form.tpl.html b/views/ngXosViews/dashboardManager/src/templates/dashboard-form.tpl.html
index 6a584e4..19c9f28 100644
--- a/views/ngXosViews/dashboardManager/src/templates/dashboard-form.tpl.html
+++ b/views/ngXosViews/dashboardManager/src/templates/dashboard-form.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-xs-10">
     <h1>Manage Dashboard</h1>
diff --git a/views/ngXosViews/dashboardManager/src/templates/user-dashboards.tpl.html b/views/ngXosViews/dashboardManager/src/templates/user-dashboards.tpl.html
index d3ced76..759c03c0 100644
--- a/views/ngXosViews/dashboardManager/src/templates/user-dashboards.tpl.html
+++ b/views/ngXosViews/dashboardManager/src/templates/user-dashboards.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-xs-10">
     <h1>Manage Your Dashboards</h1>
diff --git a/views/ngXosViews/dashboardManager/src/templates/users-list.tpl.html b/views/ngXosViews/dashboardManager/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/dashboardManager/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/dashboardManager/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/developer/gulp/build.js b/views/ngXosViews/developer/gulp/build.js
index afc9c90..27dc346 100644
--- a/views/ngXosViews/developer/gulp/build.js
+++ b/views/ngXosViews/developer/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/developer/gulp/server.js b/views/ngXosViews/developer/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/developer/gulp/server.js
+++ b/views/ngXosViews/developer/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/developer/gulpfile.js b/views/ngXosViews/developer/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/developer/gulpfile.js
+++ b/views/ngXosViews/developer/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/developer/karma.conf.js b/views/ngXosViews/developer/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/developer/karma.conf.js
+++ b/views/ngXosViews/developer/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/developer/spec/sample.test.js b/views/ngXosViews/developer/spec/sample.test.js
index 8db0a13..a74e101 100644
--- a/views/ngXosViews/developer/spec/sample.test.js
+++ b/views/ngXosViews/developer/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The User List', () => {
diff --git a/views/ngXosViews/developer/src/css/dev.css b/views/ngXosViews/developer/src/css/dev.css
index ca9b692..1f1e2b7 100644
--- a/views/ngXosViews/developer/src/css/dev.css
+++ b/views/ngXosViews/developer/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDeveloper{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/developer/src/css/main.css b/views/ngXosViews/developer/src/css/main.css
index 7b15d7c..3300744 100644
--- a/views/ngXosViews/developer/src/css/main.css
+++ b/views/ngXosViews/developer/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDeveloper .pie-legend li {
   display: inline-block;
   white-space: nowrap;
diff --git a/views/ngXosViews/developer/src/index.html b/views/ngXosViews/developer/src/index.html
index e2dd2d0..ddc2453 100644
--- a/views/ngXosViews/developer/src/index.html
+++ b/views/ngXosViews/developer/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/developer/src/js/main.js b/views/ngXosViews/developer/src/js/main.js
index b09f1ef..31dca57 100644
--- a/views/ngXosViews/developer/src/js/main.js
+++ b/views/ngXosViews/developer/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.developer', [
diff --git a/views/ngXosViews/developer/src/sass/main.scss b/views/ngXosViews/developer/src/sass/main.scss
index 043a334..015f156 100644
--- a/views/ngXosViews/developer/src/sass/main.scss
+++ b/views/ngXosViews/developer/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosDeveloper {
diff --git a/views/ngXosViews/developer/src/templates/developer-dashboard.tpl.html b/views/ngXosViews/developer/src/templates/developer-dashboard.tpl.html
index fd82f77..09f06f0 100644
--- a/views/ngXosViews/developer/src/templates/developer-dashboard.tpl.html
+++ b/views/ngXosViews/developer/src/templates/developer-dashboard.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div ng-class="{'col-sm-4': vm.sites.length > 1 || !vm.sites, 'col-sm-6': vm.sites.length <= 1}" class="text-center">
     <h3>Instances per Slice</h3>
diff --git a/views/ngXosViews/developer/src/templates/users-list.tpl.html b/views/ngXosViews/developer/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/developer/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/developer/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/diagnostic/gulp/build.js b/views/ngXosViews/diagnostic/gulp/build.js
index e95e62d..7e90645 100644
--- a/views/ngXosViews/diagnostic/gulp/build.js
+++ b/views/ngXosViews/diagnostic/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/diagnostic/gulp/server.js b/views/ngXosViews/diagnostic/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/diagnostic/gulp/server.js
+++ b/views/ngXosViews/diagnostic/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/diagnostic/gulpfile.js b/views/ngXosViews/diagnostic/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/diagnostic/gulpfile.js
+++ b/views/ngXosViews/diagnostic/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/diagnostic/karma.conf.js b/views/ngXosViews/diagnostic/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/diagnostic/karma.conf.js
+++ b/views/ngXosViews/diagnostic/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js b/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js
index dcce7e8..7ea1071 100644
--- a/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js
+++ b/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/spec/rackHelper.test.js b/views/ngXosViews/diagnostic/spec/rackHelper.test.js
index 145a2e5..7633029 100644
--- a/views/ngXosViews/diagnostic/spec/rackHelper.test.js
+++ b/views/ngXosViews/diagnostic/spec/rackHelper.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/spec/serviceChain.test.js b/views/ngXosViews/diagnostic/spec/serviceChain.test.js
index d8a3a23..78c937e 100644
--- a/views/ngXosViews/diagnostic/spec/serviceChain.test.js
+++ b/views/ngXosViews/diagnostic/spec/serviceChain.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The Service Relation Service', () => {
diff --git a/views/ngXosViews/diagnostic/src/css/dev.css b/views/ngXosViews/diagnostic/src/css/dev.css
index 45ce372..f1d1665 100644
--- a/views/ngXosViews/diagnostic/src/css/dev.css
+++ b/views/ngXosViews/diagnostic/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDiagnostic{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/diagnostic/src/css/main.css b/views/ngXosViews/diagnostic/src/css/main.css
index 07fe951..7b79357 100644
--- a/views/ngXosViews/diagnostic/src/css/main.css
+++ b/views/ngXosViews/diagnostic/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* CONTAINER */
 #xosDiagnostic, [ui-view] {
   height: 100%;
diff --git a/views/ngXosViews/diagnostic/src/index.html b/views/ngXosViews/diagnostic/src/index.html
index b5c899e..9f0fb4c 100644
--- a/views/ngXosViews/diagnostic/src/index.html
+++ b/views/ngXosViews/diagnostic/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/diagnostic/src/js/chart_data_service.js b/views/ngXosViews/diagnostic/src/js/chart_data_service.js
index 2bfc77a..419a3eb 100644
--- a/views/ngXosViews/diagnostic/src/js/chart_data_service.js
+++ b/views/ngXosViews/diagnostic/src/js/chart_data_service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/config.js b/views/ngXosViews/diagnostic/src/js/config.js
index ac0f989..3c1c486 100644
--- a/views/ngXosViews/diagnostic/src/js/config.js
+++ b/views/ngXosViews/diagnostic/src/js/config.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/d3.js b/views/ngXosViews/diagnostic/src/js/d3.js
index b56ee8f..747d72d 100644
--- a/views/ngXosViews/diagnostic/src/js/d3.js
+++ b/views/ngXosViews/diagnostic/src/js/d3.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/diagnostic.js b/views/ngXosViews/diagnostic/src/js/diagnostic.js
index 47f5e8e..dc8430a 100644
--- a/views/ngXosViews/diagnostic/src/js/diagnostic.js
+++ b/views/ngXosViews/diagnostic/src/js/diagnostic.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.diagnostic')
diff --git a/views/ngXosViews/diagnostic/src/js/logicTopology.js b/views/ngXosViews/diagnostic/src/js/logicTopology.js
index a14ec57..55378fc 100644
--- a/views/ngXosViews/diagnostic/src/js/logicTopology.js
+++ b/views/ngXosViews/diagnostic/src/js/logicTopology.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.diagnostic')
diff --git a/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js b/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
index 6c85cdf..40ec182 100644
--- a/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
+++ b/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/main.js b/views/ngXosViews/diagnostic/src/js/main.js
index 210606a..d4fbc92 100644
--- a/views/ngXosViews/diagnostic/src/js/main.js
+++ b/views/ngXosViews/diagnostic/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
index a24483f..6560a8e 100644
--- a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
+++ b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/rackHelper.js b/views/ngXosViews/diagnostic/src/js/rackHelper.js
index af3eb30..2802943 100644
--- a/views/ngXosViews/diagnostic/src/js/rackHelper.js
+++ b/views/ngXosViews/diagnostic/src/js/rackHelper.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   angular.module('xos.diagnostic')
   .service('RackHelper', function(serviceTopologyConfig, _){
diff --git a/views/ngXosViews/diagnostic/src/js/rest_services.js b/views/ngXosViews/diagnostic/src/js/rest_services.js
index 50a276c..7287693 100644
--- a/views/ngXosViews/diagnostic/src/js/rest_services.js
+++ b/views/ngXosViews/diagnostic/src/js/rest_services.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/serviceTopology.js b/views/ngXosViews/diagnostic/src/js/serviceTopology.js
index cf0b34f..76368c1 100644
--- a/views/ngXosViews/diagnostic/src/js/serviceTopology.js
+++ b/views/ngXosViews/diagnostic/src/js/serviceTopology.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js b/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js
index c903b3b..ecb8ade 100644
--- a/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js
+++ b/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/diagnostic/src/js/subscriber-modal.js b/views/ngXosViews/diagnostic/src/js/subscriber-modal.js
index e99f7e2..c681f93 100644
--- a/views/ngXosViews/diagnostic/src/js/subscriber-modal.js
+++ b/views/ngXosViews/diagnostic/src/js/subscriber-modal.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   angular.module('xos.diagnostic')
diff --git a/views/ngXosViews/diagnostic/src/sass/main.scss b/views/ngXosViews/diagnostic/src/sass/main.scss
index 90f1c50..391ad88 100644
--- a/views/ngXosViews/diagnostic/src/sass/main.scss
+++ b/views/ngXosViews/diagnostic/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* CONTAINER */
 #xosDiagnostic, [ui-view] {
     height: 100%;
diff --git a/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html b/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html
index bab176d..f6b00cb 100644
--- a/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html
+++ b/views/ngXosViews/diagnostic/src/templates/diagnostic.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="container-fluid">
   <div ng-hide="vm.error && vm.loader" style="height: 900px">
     <div class="onethird-height">
diff --git a/views/ngXosViews/diagnostic/src/templates/logicTopology.tpl.html b/views/ngXosViews/diagnostic/src/templates/logicTopology.tpl.html
index e942fca..9dba380 100644
--- a/views/ngXosViews/diagnostic/src/templates/logicTopology.tpl.html
+++ b/views/ngXosViews/diagnostic/src/templates/logicTopology.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <select-subscriber-modal open="vm.openSelectSubscriberModal" subscribers="vm.subscribers"></select-subscriber-modal>
 <subscriber-status-modal open="vm.openSubscriberStatusModal" subscriber="vm.currentSubscriber"></subscriber-status-modal>
 <div class="alert alert-danger animate" ng-hide="!vm.error">
diff --git a/views/ngXosViews/diagnostic/src/templates/select-subscriber-modal.tpl.html b/views/ngXosViews/diagnostic/src/templates/select-subscriber-modal.tpl.html
index 7672a29..f66336b 100644
--- a/views/ngXosViews/diagnostic/src/templates/select-subscriber-modal.tpl.html
+++ b/views/ngXosViews/diagnostic/src/templates/select-subscriber-modal.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="modal fade" ng-class="{in: vm.open}" tabindex="-1" role="dialog">
   <div class="modal-dialog modal-sm">
     <div class="modal-content">
diff --git a/views/ngXosViews/diagnostic/src/templates/subscriber-status-modal.tpl.html b/views/ngXosViews/diagnostic/src/templates/subscriber-status-modal.tpl.html
index 6aca961..35fbee8 100644
--- a/views/ngXosViews/diagnostic/src/templates/subscriber-status-modal.tpl.html
+++ b/views/ngXosViews/diagnostic/src/templates/subscriber-status-modal.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="modal fade" ng-class="{in: vm.open}" tabindex="-1" role="dialog">
   <div class="modal-dialog modal-sm">
     <div class="modal-content">
diff --git a/views/ngXosViews/ecordTopology/gulp/build.js b/views/ngXosViews/ecordTopology/gulp/build.js
index e4ad0d6..3774c47 100644
--- a/views/ngXosViews/ecordTopology/gulp/build.js
+++ b/views/ngXosViews/ecordTopology/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/ecordTopology/gulp/server.js b/views/ngXosViews/ecordTopology/gulp/server.js
index d386289..f11a875 100644
--- a/views/ngXosViews/ecordTopology/gulp/server.js
+++ b/views/ngXosViews/ecordTopology/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/ecordTopology/gulpfile.js b/views/ngXosViews/ecordTopology/gulpfile.js
index 08df554..c824ebc 100644
--- a/views/ngXosViews/ecordTopology/gulpfile.js
+++ b/views/ngXosViews/ecordTopology/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/ecordTopology/karma.conf.js b/views/ngXosViews/ecordTopology/karma.conf.js
index 4123be9..a708fd5 100644
--- a/views/ngXosViews/ecordTopology/karma.conf.js
+++ b/views/ngXosViews/ecordTopology/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/ecordTopology/mocks/sca.py b/views/ngXosViews/ecordTopology/mocks/sca.py
index 1b7aec3..111d16f 100644
--- a/views/ngXosViews/ecordTopology/mocks/sca.py
+++ b/views/ngXosViews/ecordTopology/mocks/sca.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/python
 
 import copy
diff --git a/views/ngXosViews/ecordTopology/spec/sample.test.js b/views/ngXosViews/ecordTopology/spec/sample.test.js
index 0635ee3..4e34115 100644
--- a/views/ngXosViews/ecordTopology/spec/sample.test.js
+++ b/views/ngXosViews/ecordTopology/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The User List', () => {
diff --git a/views/ngXosViews/ecordTopology/src/css/elan-map.css b/views/ngXosViews/ecordTopology/src/css/elan-map.css
index eb62cd2..f2fa007 100644
--- a/views/ngXosViews/ecordTopology/src/css/elan-map.css
+++ b/views/ngXosViews/ecordTopology/src/css/elan-map.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*$brand-primary: $cord-red;*/
 elan-map {
   display: block;
diff --git a/views/ngXosViews/ecordTopology/src/css/eline-details.css b/views/ngXosViews/ecordTopology/src/css/eline-details.css
index 3c643d7..fcfb41b 100644
--- a/views/ngXosViews/ecordTopology/src/css/eline-details.css
+++ b/views/ngXosViews/ecordTopology/src/css/eline-details.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 .service-container .btn {
   font-size: 12px; }
 
diff --git a/views/ngXosViews/ecordTopology/src/css/main.css b/views/ngXosViews/ecordTopology/src/css/main.css
index ccb5ba7..90aa31c 100644
--- a/views/ngXosViews/ecordTopology/src/css/main.css
+++ b/views/ngXosViews/ecordTopology/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @charset "UTF-8";
 /*!
  * Bootstrap v3.3.6 (http://getbootstrap.com)
diff --git a/views/ngXosViews/ecordTopology/src/css/service-map.css b/views/ngXosViews/ecordTopology/src/css/service-map.css
index cb4ad8f..a47ec1f 100644
--- a/views/ngXosViews/ecordTopology/src/css/service-map.css
+++ b/views/ngXosViews/ecordTopology/src/css/service-map.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*$brand-primary: $cord-red;*/
 service-map {
   width: 100%;
diff --git a/views/ngXosViews/ecordTopology/src/css/vars.css b/views/ngXosViews/ecordTopology/src/css/vars.css
index 941b456..2eb52a9 100644
--- a/views/ngXosViews/ecordTopology/src/css/vars.css
+++ b/views/ngXosViews/ecordTopology/src/css/vars.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*$brand-primary: $cord-red;*/
diff --git a/views/ngXosViews/ecordTopology/src/index.html b/views/ngXosViews/ecordTopology/src/index.html
index 9480913..968e9d4 100644
--- a/views/ngXosViews/ecordTopology/src/index.html
+++ b/views/ngXosViews/ecordTopology/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/ecordTopology/src/js/eline-details.directive.js b/views/ngXosViews/ecordTopology/src/js/eline-details.directive.js
index e4c1f7c..58781ec 100644
--- a/views/ngXosViews/ecordTopology/src/js/eline-details.directive.js
+++ b/views/ngXosViews/ecordTopology/src/js/eline-details.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ecordTopology/src/js/eline-form.directive.js b/views/ngXosViews/ecordTopology/src/js/eline-form.directive.js
index 8a09b6b..dd0f543 100644
--- a/views/ngXosViews/ecordTopology/src/js/eline-form.directive.js
+++ b/views/ngXosViews/ecordTopology/src/js/eline-form.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ecordTopology/src/js/eline-map.directive.js b/views/ngXosViews/ecordTopology/src/js/eline-map.directive.js
index f93c314..33fe8b5 100644
--- a/views/ngXosViews/ecordTopology/src/js/eline-map.directive.js
+++ b/views/ngXosViews/ecordTopology/src/js/eline-map.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ecordTopology/src/js/eline.service.js b/views/ngXosViews/ecordTopology/src/js/eline.service.js
index 731c545..7bf3379 100644
--- a/views/ngXosViews/ecordTopology/src/js/eline.service.js
+++ b/views/ngXosViews/ecordTopology/src/js/eline.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ecordTopology/src/js/main.js b/views/ngXosViews/ecordTopology/src/js/main.js
index 8d6a362..010bff1 100644
--- a/views/ngXosViews/ecordTopology/src/js/main.js
+++ b/views/ngXosViews/ecordTopology/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.ecordTopology', [
diff --git a/views/ngXosViews/ecordTopology/src/js/service-map.directive.js b/views/ngXosViews/ecordTopology/src/js/service-map.directive.js
index 2318b48..376bbd3 100644
--- a/views/ngXosViews/ecordTopology/src/js/service-map.directive.js
+++ b/views/ngXosViews/ecordTopology/src/js/service-map.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ecordTopology/src/js/uni.service.js b/views/ngXosViews/ecordTopology/src/js/uni.service.js
index 3ac2beb..c660e1d 100644
--- a/views/ngXosViews/ecordTopology/src/js/uni.service.js
+++ b/views/ngXosViews/ecordTopology/src/js/uni.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/ecordTopology/src/sass/elan-map.scss b/views/ngXosViews/ecordTopology/src/sass/elan-map.scss
index a693ab0..231444b 100644
--- a/views/ngXosViews/ecordTopology/src/sass/elan-map.scss
+++ b/views/ngXosViews/ecordTopology/src/sass/elan-map.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 @import './vars.scss';
 
diff --git a/views/ngXosViews/ecordTopology/src/sass/eline-details.scss b/views/ngXosViews/ecordTopology/src/sass/eline-details.scss
index 2d7834b..923e3d2 100644
--- a/views/ngXosViews/ecordTopology/src/sass/eline-details.scss
+++ b/views/ngXosViews/ecordTopology/src/sass/eline-details.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 @import '../../../../style/sass/bootstrap/bootstrap/_variables.scss';
 
diff --git a/views/ngXosViews/ecordTopology/src/sass/main.scss b/views/ngXosViews/ecordTopology/src/sass/main.scss
index 006182c..41e7492 100644
--- a/views/ngXosViews/ecordTopology/src/sass/main.scss
+++ b/views/ngXosViews/ecordTopology/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 @import '../../../../style/sass/bootstrap/_bootstrap.scss';
 
diff --git a/views/ngXosViews/ecordTopology/src/sass/service-map.scss b/views/ngXosViews/ecordTopology/src/sass/service-map.scss
index 966901b..4e66b47 100644
--- a/views/ngXosViews/ecordTopology/src/sass/service-map.scss
+++ b/views/ngXosViews/ecordTopology/src/sass/service-map.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 @import './vars.scss';
 
diff --git a/views/ngXosViews/ecordTopology/src/sass/vars.scss b/views/ngXosViews/ecordTopology/src/sass/vars.scss
index 5cb2d36..16f4a86 100644
--- a/views/ngXosViews/ecordTopology/src/sass/vars.scss
+++ b/views/ngXosViews/ecordTopology/src/sass/vars.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 $cord-red: #CE5650;
 
 /*$brand-primary: $cord-red;*/
diff --git a/views/ngXosViews/ecordTopology/src/templates/ecord-topo.tpl.html b/views/ngXosViews/ecordTopology/src/templates/ecord-topo.tpl.html
index 7c7e31e..393b6e6 100644
--- a/views/ngXosViews/ecordTopology/src/templates/ecord-topo.tpl.html
+++ b/views/ngXosViews/ecordTopology/src/templates/ecord-topo.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row" ng-show="vm.elines.length == 0">
     <div class="col-xs-10 col-xs-offset-1 text-center">
         <div class="jumbotron" style="margin-top: 100px">
diff --git a/views/ngXosViews/ecordTopology/src/templates/eline-details.tpl.html b/views/ngXosViews/ecordTopology/src/templates/eline-details.tpl.html
index 533099d..3ab1786 100644
--- a/views/ngXosViews/ecordTopology/src/templates/eline-details.tpl.html
+++ b/views/ngXosViews/ecordTopology/src/templates/eline-details.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div id="home" class="container-fluid">
     <div class="row">
         <div class="col-sm-6">
diff --git a/views/ngXosViews/ecordTopology/src/templates/eline-form.tpl.html b/views/ngXosViews/ecordTopology/src/templates/eline-form.tpl.html
index ebe0445..3defbc3 100644
--- a/views/ngXosViews/ecordTopology/src/templates/eline-form.tpl.html
+++ b/views/ngXosViews/ecordTopology/src/templates/eline-form.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- ELINE CREATION POINT TO POINT -->
 <div class="container-fluid eline-form">
     <div class="row">
diff --git a/views/ngXosViews/globalXos/gulp/build.js b/views/ngXosViews/globalXos/gulp/build.js
index e53042c..a3c7b05 100644
--- a/views/ngXosViews/globalXos/gulp/build.js
+++ b/views/ngXosViews/globalXos/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/globalXos/gulp/server.js b/views/ngXosViews/globalXos/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/globalXos/gulp/server.js
+++ b/views/ngXosViews/globalXos/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/globalXos/gulpfile.js b/views/ngXosViews/globalXos/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/globalXos/gulpfile.js
+++ b/views/ngXosViews/globalXos/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/globalXos/karma.conf.js b/views/ngXosViews/globalXos/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/globalXos/karma.conf.js
+++ b/views/ngXosViews/globalXos/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/globalXos/spec/sample.test.js b/views/ngXosViews/globalXos/spec/sample.test.js
index 6f21d7c..f2436c6 100644
--- a/views/ngXosViews/globalXos/spec/sample.test.js
+++ b/views/ngXosViews/globalXos/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The User List', () => {
diff --git a/views/ngXosViews/globalXos/src/css/dev.css b/views/ngXosViews/globalXos/src/css/dev.css
index e69de29..e41be01 100644
--- a/views/ngXosViews/globalXos/src/css/dev.css
+++ b/views/ngXosViews/globalXos/src/css/dev.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/views/ngXosViews/globalXos/src/css/main.css b/views/ngXosViews/globalXos/src/css/main.css
index be8d4bf..66f2d12 100644
--- a/views/ngXosViews/globalXos/src/css/main.css
+++ b/views/ngXosViews/globalXos/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosGlobalXos ui-view,
 #xosGlobalXos xos-list {
   display: block; }
diff --git a/views/ngXosViews/globalXos/src/index.html b/views/ngXosViews/globalXos/src/index.html
index 4f2206e..55b0d48 100644
--- a/views/ngXosViews/globalXos/src/index.html
+++ b/views/ngXosViews/globalXos/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/globalXos/src/js/main.js b/views/ngXosViews/globalXos/src/js/main.js
index 16beca1..5cf11f6 100644
--- a/views/ngXosViews/globalXos/src/js/main.js
+++ b/views/ngXosViews/globalXos/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.globalXos', [
diff --git a/views/ngXosViews/globalXos/src/js/rest.js b/views/ngXosViews/globalXos/src/js/rest.js
index 2ad47bc..910d8b5 100644
--- a/views/ngXosViews/globalXos/src/js/rest.js
+++ b/views/ngXosViews/globalXos/src/js/rest.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/globalXos/src/sass/main.scss b/views/ngXosViews/globalXos/src/sass/main.scss
index 4ecf82d..5b61c64 100644
--- a/views/ngXosViews/globalXos/src/sass/main.scss
+++ b/views/ngXosViews/globalXos/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosGlobalXos {
diff --git a/views/ngXosViews/globalXos/src/templates/xos-list.tpl.html b/views/ngXosViews/globalXos/src/templates/xos-list.tpl.html
index 6299ba0..d543d71 100644
--- a/views/ngXosViews/globalXos/src/templates/xos-list.tpl.html
+++ b/views/ngXosViews/globalXos/src/templates/xos-list.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="container">
   <div class="row">
     <h2>Select XOS to synch:</h2>
diff --git a/views/ngXosViews/hpc/gulp/build.js b/views/ngXosViews/hpc/gulp/build.js
index a3ebe09..5bc12bc 100644
--- a/views/ngXosViews/hpc/gulp/build.js
+++ b/views/ngXosViews/hpc/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/hpc/gulp/server.js b/views/ngXosViews/hpc/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/hpc/gulp/server.js
+++ b/views/ngXosViews/hpc/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/hpc/gulpfile.js b/views/ngXosViews/hpc/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/hpc/gulpfile.js
+++ b/views/ngXosViews/hpc/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/hpc/karma.conf.js b/views/ngXosViews/hpc/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/hpc/karma.conf.js
+++ b/views/ngXosViews/hpc/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/hpc/spec/sample.test.js b/views/ngXosViews/hpc/spec/sample.test.js
index 0b08084..de3ce99 100644
--- a/views/ngXosViews/hpc/spec/sample.test.js
+++ b/views/ngXosViews/hpc/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The Hpc View', () => {
diff --git a/views/ngXosViews/hpc/src/css/dev.css b/views/ngXosViews/hpc/src/css/dev.css
index 5b3694e..a8b57f4 100644
--- a/views/ngXosViews/hpc/src/css/dev.css
+++ b/views/ngXosViews/hpc/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosHpc{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/hpc/src/css/main.css b/views/ngXosViews/hpc/src/css/main.css
index 24f5982..f7b93e4 100644
--- a/views/ngXosViews/hpc/src/css/main.css
+++ b/views/ngXosViews/hpc/src/css/main.css
@@ -1,2 +1,20 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosHpc .btn.btn-reload {
   margin-top: 20px; }
diff --git a/views/ngXosViews/hpc/src/index.html b/views/ngXosViews/hpc/src/index.html
index c583282..70c2f74 100644
--- a/views/ngXosViews/hpc/src/index.html
+++ b/views/ngXosViews/hpc/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/hpc/src/js/main.js b/views/ngXosViews/hpc/src/js/main.js
index ca6a5a0..cb4c1f8 100644
--- a/views/ngXosViews/hpc/src/js/main.js
+++ b/views/ngXosViews/hpc/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.hpc', [
diff --git a/views/ngXosViews/hpc/src/sass/main.scss b/views/ngXosViews/hpc/src/sass/main.scss
index c646843..f79d675 100644
--- a/views/ngXosViews/hpc/src/sass/main.scss
+++ b/views/ngXosViews/hpc/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosHpc {
diff --git a/views/ngXosViews/hpc/src/templates/hpc-list.tpl.html b/views/ngXosViews/hpc/src/templates/hpc-list.tpl.html
index 138323f..72cf48b 100644
--- a/views/ngXosViews/hpc/src/templates/hpc-list.tpl.html
+++ b/views/ngXosViews/hpc/src/templates/hpc-list.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="container-fluid">
     <div class="row">
         <div class="col-xs-10">
diff --git a/views/ngXosViews/hpc/src/templates/users-list.tpl.html b/views/ngXosViews/hpc/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/hpc/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/hpc/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/mcord-slicing/gulp/build.js b/views/ngXosViews/mcord-slicing/gulp/build.js
index 48938c8..5cc5fe8 100644
--- a/views/ngXosViews/mcord-slicing/gulp/build.js
+++ b/views/ngXosViews/mcord-slicing/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/mcord-slicing/gulp/server.js b/views/ngXosViews/mcord-slicing/gulp/server.js
index 7ff49c6..785f016 100644
--- a/views/ngXosViews/mcord-slicing/gulp/server.js
+++ b/views/ngXosViews/mcord-slicing/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/mcord-slicing/gulpfile.js b/views/ngXosViews/mcord-slicing/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/mcord-slicing/gulpfile.js
+++ b/views/ngXosViews/mcord-slicing/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/mcord-slicing/karma.conf.js b/views/ngXosViews/mcord-slicing/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/mcord-slicing/karma.conf.js
+++ b/views/ngXosViews/mcord-slicing/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/mcord-slicing/spec/sample.test.js b/views/ngXosViews/mcord-slicing/spec/sample.test.js
index 9976190..69950e7 100644
--- a/views/ngXosViews/mcord-slicing/spec/sample.test.js
+++ b/views/ngXosViews/mcord-slicing/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The MCORD Slicing Topology', () => {
diff --git a/views/ngXosViews/mcord-slicing/src/css/dev.css b/views/ngXosViews/mcord-slicing/src/css/dev.css
index c8ed540..7a9a2d5 100644
--- a/views/ngXosViews/mcord-slicing/src/css/dev.css
+++ b/views/ngXosViews/mcord-slicing/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*#xosMcord-slicing{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/mcord-slicing/src/css/main.css b/views/ngXosViews/mcord-slicing/src/css/main.css
index b36c572..684282e 100644
--- a/views/ngXosViews/mcord-slicing/src/css/main.css
+++ b/views/ngXosViews/mcord-slicing/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosMcord-slicing,
 #xosMcord-slicing > [ui-view],
 slicing-topo {
diff --git a/views/ngXosViews/mcord-slicing/src/index.html b/views/ngXosViews/mcord-slicing/src/index.html
index 78bed2d..8351485 100644
--- a/views/ngXosViews/mcord-slicing/src/index.html
+++ b/views/ngXosViews/mcord-slicing/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/mcord-slicing/src/js/form.service.js b/views/ngXosViews/mcord-slicing/src/js/form.service.js
index e18ab10..862ca42 100644
--- a/views/ngXosViews/mcord-slicing/src/js/form.service.js
+++ b/views/ngXosViews/mcord-slicing/src/js/form.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/mcord-slicing/src/js/graph.service.js b/views/ngXosViews/mcord-slicing/src/js/graph.service.js
index b4127b8..02bf79f 100644
--- a/views/ngXosViews/mcord-slicing/src/js/graph.service.js
+++ b/views/ngXosViews/mcord-slicing/src/js/graph.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/mcord-slicing/src/js/main.js b/views/ngXosViews/mcord-slicing/src/js/main.js
index fbd9039..4b0f37d 100644
--- a/views/ngXosViews/mcord-slicing/src/js/main.js
+++ b/views/ngXosViews/mcord-slicing/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.mcord-slicing', [
diff --git a/views/ngXosViews/mcord-slicing/src/js/slicing-topo.directive.js b/views/ngXosViews/mcord-slicing/src/js/slicing-topo.directive.js
index 4586796..07f85ca 100644
--- a/views/ngXosViews/mcord-slicing/src/js/slicing-topo.directive.js
+++ b/views/ngXosViews/mcord-slicing/src/js/slicing-topo.directive.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/mcord-slicing/src/sass/main.scss b/views/ngXosViews/mcord-slicing/src/sass/main.scss
index 347433f..573bf46 100644
--- a/views/ngXosViews/mcord-slicing/src/sass/main.scss
+++ b/views/ngXosViews/mcord-slicing/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosMcord-slicing,
diff --git a/views/ngXosViews/mcord-slicing/src/templates/node-links.tpl.html b/views/ngXosViews/mcord-slicing/src/templates/node-links.tpl.html
index e15da33..c5333cb 100644
--- a/views/ngXosViews/mcord-slicing/src/templates/node-links.tpl.html
+++ b/views/ngXosViews/mcord-slicing/src/templates/node-links.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-sm-12">
     <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
diff --git a/views/ngXosViews/mcord-slicing/src/templates/slicing-topo.tpl.html b/views/ngXosViews/mcord-slicing/src/templates/slicing-topo.tpl.html
index e69de29..28cbf46 100644
--- a/views/ngXosViews/mcord-slicing/src/templates/slicing-topo.tpl.html
+++ b/views/ngXosViews/mcord-slicing/src/templates/slicing-topo.tpl.html
@@ -0,0 +1,18 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
diff --git a/views/ngXosViews/mcordTopology/gulp/build.js b/views/ngXosViews/mcordTopology/gulp/build.js
index c0fe5a7..6a5057e 100644
--- a/views/ngXosViews/mcordTopology/gulp/build.js
+++ b/views/ngXosViews/mcordTopology/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/mcordTopology/gulp/server.js b/views/ngXosViews/mcordTopology/gulp/server.js
index 0ffef89..d31c115 100644
--- a/views/ngXosViews/mcordTopology/gulp/server.js
+++ b/views/ngXosViews/mcordTopology/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/mcordTopology/gulpfile.js b/views/ngXosViews/mcordTopology/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/mcordTopology/gulpfile.js
+++ b/views/ngXosViews/mcordTopology/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/mcordTopology/karma.conf.js b/views/ngXosViews/mcordTopology/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/mcordTopology/karma.conf.js
+++ b/views/ngXosViews/mcordTopology/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/mcordTopology/spec/sample.test.js b/views/ngXosViews/mcordTopology/spec/sample.test.js
index 80a0184..93a9fea 100644
--- a/views/ngXosViews/mcordTopology/spec/sample.test.js
+++ b/views/ngXosViews/mcordTopology/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The User List', () => {
diff --git a/views/ngXosViews/mcordTopology/src/css/dev.css b/views/ngXosViews/mcordTopology/src/css/dev.css
index 32d915d..a40165e 100644
--- a/views/ngXosViews/mcordTopology/src/css/dev.css
+++ b/views/ngXosViews/mcordTopology/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosMcordTopology{
   position: absolute;
   /*top: 100px;
diff --git a/views/ngXosViews/mcordTopology/src/css/main.css b/views/ngXosViews/mcordTopology/src/css/main.css
index e69de29..e41be01 100644
--- a/views/ngXosViews/mcordTopology/src/css/main.css
+++ b/views/ngXosViews/mcordTopology/src/css/main.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/views/ngXosViews/mcordTopology/src/css/mcord.css b/views/ngXosViews/mcordTopology/src/css/mcord.css
index 8fb7540..ba28d41 100644
--- a/views/ngXosViews/mcordTopology/src/css/mcord.css
+++ b/views/ngXosViews/mcordTopology/src/css/mcord.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosMcordTopology {
   height: 700px;
 }
diff --git a/views/ngXosViews/mcordTopology/src/index.html b/views/ngXosViews/mcordTopology/src/index.html
index 8b8c714..d9fea44 100644
--- a/views/ngXosViews/mcordTopology/src/index.html
+++ b/views/ngXosViews/mcordTopology/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/mcordTopology/src/js/main.js b/views/ngXosViews/mcordTopology/src/js/main.js
index 6a38c3e..d37acd7 100644
--- a/views/ngXosViews/mcordTopology/src/js/main.js
+++ b/views/ngXosViews/mcordTopology/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.mcordTopology', [
diff --git a/views/ngXosViews/mcordTopology/src/js/node_drawer.js b/views/ngXosViews/mcordTopology/src/js/node_drawer.js
index b2dae65..5394da4 100644
--- a/views/ngXosViews/mcordTopology/src/js/node_drawer.js
+++ b/views/ngXosViews/mcordTopology/src/js/node_drawer.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.mcordTopology')
diff --git a/views/ngXosViews/mcordTopology/src/js/static.data.js b/views/ngXosViews/mcordTopology/src/js/static.data.js
index 97ccf9d..3978965 100644
--- a/views/ngXosViews/mcordTopology/src/js/static.data.js
+++ b/views/ngXosViews/mcordTopology/src/js/static.data.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.mcordTopology')
diff --git a/views/ngXosViews/mcordTopology/src/sass/main.scss b/views/ngXosViews/mcordTopology/src/sass/main.scss
index 78cf25b..fcc6e8f 100644
--- a/views/ngXosViews/mcordTopology/src/sass/main.scss
+++ b/views/ngXosViews/mcordTopology/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosMcordTopology {
diff --git a/views/ngXosViews/mcordTopology/src/templates/users-list.tpl.html b/views/ngXosViews/mcordTopology/src/templates/users-list.tpl.html
index fd8d208..1e4b5be 100644
--- a/views/ngXosViews/mcordTopology/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/mcordTopology/src/templates/users-list.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-xs-12">
     <h1>Users List</h1>
diff --git a/views/ngXosViews/openVPNDashboard/gulp/build.js b/views/ngXosViews/openVPNDashboard/gulp/build.js
index ec430e6..8c1a72b 100644
--- a/views/ngXosViews/openVPNDashboard/gulp/build.js
+++ b/views/ngXosViews/openVPNDashboard/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/openVPNDashboard/gulp/server.js b/views/ngXosViews/openVPNDashboard/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/openVPNDashboard/gulp/server.js
+++ b/views/ngXosViews/openVPNDashboard/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/openVPNDashboard/gulpfile.js b/views/ngXosViews/openVPNDashboard/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/openVPNDashboard/gulpfile.js
+++ b/views/ngXosViews/openVPNDashboard/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/openVPNDashboard/karma.conf.js b/views/ngXosViews/openVPNDashboard/karma.conf.js
index 90d1ed0..92a9ef0 100644
--- a/views/ngXosViews/openVPNDashboard/karma.conf.js
+++ b/views/ngXosViews/openVPNDashboard/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/openVPNDashboard/spec/sample.test.js b/views/ngXosViews/openVPNDashboard/spec/sample.test.js
index 0f49ff3..fdd3c31 100644
--- a/views/ngXosViews/openVPNDashboard/spec/sample.test.js
+++ b/views/ngXosViews/openVPNDashboard/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The User List', () => {
diff --git a/views/ngXosViews/openVPNDashboard/src/css/dev.css b/views/ngXosViews/openVPNDashboard/src/css/dev.css
index 557a343..37995e8 100644
--- a/views/ngXosViews/openVPNDashboard/src/css/dev.css
+++ b/views/ngXosViews/openVPNDashboard/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosOpenVPNDashboard{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/openVPNDashboard/src/css/main.css b/views/ngXosViews/openVPNDashboard/src/css/main.css
index 554a43a..f527055 100644
--- a/views/ngXosViews/openVPNDashboard/src/css/main.css
+++ b/views/ngXosViews/openVPNDashboard/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosOpenVPNDashboard {
   width: 70%;
   margin: auto; }
diff --git a/views/ngXosViews/openVPNDashboard/src/index.html b/views/ngXosViews/openVPNDashboard/src/index.html
index 2f1ac8f..af5e294 100644
--- a/views/ngXosViews/openVPNDashboard/src/index.html
+++ b/views/ngXosViews/openVPNDashboard/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/openVPNDashboard/src/js/main.js b/views/ngXosViews/openVPNDashboard/src/js/main.js
index 6f6bce2..5a6e173 100644
--- a/views/ngXosViews/openVPNDashboard/src/js/main.js
+++ b/views/ngXosViews/openVPNDashboard/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.openVPNDashboard', [
diff --git a/views/ngXosViews/openVPNDashboard/src/sass/main.scss b/views/ngXosViews/openVPNDashboard/src/sass/main.scss
index 96b8ce5..23b7c3e 100644
--- a/views/ngXosViews/openVPNDashboard/src/sass/main.scss
+++ b/views/ngXosViews/openVPNDashboard/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosOpenVPNDashboard {
diff --git a/views/ngXosViews/openVPNDashboard/src/templates/openvpn-list.tpl.html b/views/ngXosViews/openVPNDashboard/src/templates/openvpn-list.tpl.html
index 0c7635f..8f72232 100644
--- a/views/ngXosViews/openVPNDashboard/src/templates/openvpn-list.tpl.html
+++ b/views/ngXosViews/openVPNDashboard/src/templates/openvpn-list.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div style="display: table;">
   <div class="vpn-row">
     <h1 class="vpn-cell">VPN List</h1>
diff --git a/views/ngXosViews/openVPNDashboard/src/templates/users-list.tpl.html b/views/ngXosViews/openVPNDashboard/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/openVPNDashboard/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/openVPNDashboard/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/serviceGrid/gulp/build.js b/views/ngXosViews/serviceGrid/gulp/build.js
index 41213d4..bef7c56 100644
--- a/views/ngXosViews/serviceGrid/gulp/build.js
+++ b/views/ngXosViews/serviceGrid/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/serviceGrid/gulp/server.js b/views/ngXosViews/serviceGrid/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/serviceGrid/gulp/server.js
+++ b/views/ngXosViews/serviceGrid/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/serviceGrid/gulpfile.js b/views/ngXosViews/serviceGrid/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/serviceGrid/gulpfile.js
+++ b/views/ngXosViews/serviceGrid/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/serviceGrid/karma.conf.js b/views/ngXosViews/serviceGrid/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/serviceGrid/karma.conf.js
+++ b/views/ngXosViews/serviceGrid/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/serviceGrid/spec/services_encoder.test.js b/views/ngXosViews/serviceGrid/spec/services_encoder.test.js
index 3107b7f..2090f0e 100644
--- a/views/ngXosViews/serviceGrid/spec/services_encoder.test.js
+++ b/views/ngXosViews/serviceGrid/spec/services_encoder.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/spec/site_encoder.test.js b/views/ngXosViews/serviceGrid/spec/site_encoder.test.js
index fdc6d50..63fab56 100644
--- a/views/ngXosViews/serviceGrid/spec/site_encoder.test.js
+++ b/views/ngXosViews/serviceGrid/spec/site_encoder.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/spec/slices_encoder.test.js b/views/ngXosViews/serviceGrid/spec/slices_encoder.test.js
index f32bc9a..71d36a5 100644
--- a/views/ngXosViews/serviceGrid/spec/slices_encoder.test.js
+++ b/views/ngXosViews/serviceGrid/spec/slices_encoder.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/spec/tosca_encoder.test.js b/views/ngXosViews/serviceGrid/spec/tosca_encoder.test.js
index d968419..40825ef 100644
--- a/views/ngXosViews/serviceGrid/spec/tosca_encoder.test.js
+++ b/views/ngXosViews/serviceGrid/spec/tosca_encoder.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
   describe('The Tosca Encoder Service', () => {
diff --git a/views/ngXosViews/serviceGrid/src/css/dev.css b/views/ngXosViews/serviceGrid/src/css/dev.css
index e69de29..e41be01 100644
--- a/views/ngXosViews/serviceGrid/src/css/dev.css
+++ b/views/ngXosViews/serviceGrid/src/css/dev.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/views/ngXosViews/serviceGrid/src/css/main.css b/views/ngXosViews/serviceGrid/src/css/main.css
index c95ce7d..69d4f23 100644
--- a/views/ngXosViews/serviceGrid/src/css/main.css
+++ b/views/ngXosViews/serviceGrid/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 xos-side-panel .xos-side-panel-content {
   position: fixed;
   width: 30%;
diff --git a/views/ngXosViews/serviceGrid/src/css/side-panel.css b/views/ngXosViews/serviceGrid/src/css/side-panel.css
index 3cde922..5a16247 100644
--- a/views/ngXosViews/serviceGrid/src/css/side-panel.css
+++ b/views/ngXosViews/serviceGrid/src/css/side-panel.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 xos-side-panel .xos-side-panel-content {
   position: fixed;
   width: 30%;
diff --git a/views/ngXosViews/serviceGrid/src/index.html b/views/ngXosViews/serviceGrid/src/index.html
index 0058e98..8707112 100644
--- a/views/ngXosViews/serviceGrid/src/index.html
+++ b/views/ngXosViews/serviceGrid/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/serviceGrid/src/js/archive_manager.service.js b/views/ngXosViews/serviceGrid/src/js/archive_manager.service.js
index 92681ee..18f4898 100644
--- a/views/ngXosViews/serviceGrid/src/js/archive_manager.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/archive_manager.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/image_encoder.service.js b/views/ngXosViews/serviceGrid/src/js/image_encoder.service.js
index 972023c..cd4fa8b 100644
--- a/views/ngXosViews/serviceGrid/src/js/image_encoder.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/image_encoder.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/main.js b/views/ngXosViews/serviceGrid/src/js/main.js
index fc75b2f..95c2342 100644
--- a/views/ngXosViews/serviceGrid/src/js/main.js
+++ b/views/ngXosViews/serviceGrid/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.serviceGrid', [
diff --git a/views/ngXosViews/serviceGrid/src/js/network_template_encoder.service.js b/views/ngXosViews/serviceGrid/src/js/network_template_encoder.service.js
index 1784d90..c892786 100644
--- a/views/ngXosViews/serviceGrid/src/js/network_template_encoder.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/network_template_encoder.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/networks_encoder.service.js b/views/ngXosViews/serviceGrid/src/js/networks_encoder.service.js
index 1e6adee..82f12ca 100644
--- a/views/ngXosViews/serviceGrid/src/js/networks_encoder.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/networks_encoder.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/service-graph.js b/views/ngXosViews/serviceGrid/src/js/service-graph.js
index 649be6d..e2b29b4 100644
--- a/views/ngXosViews/serviceGrid/src/js/service-graph.js
+++ b/views/ngXosViews/serviceGrid/src/js/service-graph.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/serviceGrid/src/js/service_encorder.service.js b/views/ngXosViews/serviceGrid/src/js/service_encorder.service.js
index 485d46a..a5792a5 100644
--- a/views/ngXosViews/serviceGrid/src/js/service_encorder.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/service_encorder.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/sidePanel.component.js b/views/ngXosViews/serviceGrid/src/js/sidePanel.component.js
index 4421ee7..fa95025 100644
--- a/views/ngXosViews/serviceGrid/src/js/sidePanel.component.js
+++ b/views/ngXosViews/serviceGrid/src/js/sidePanel.component.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/site_encode.service.js b/views/ngXosViews/serviceGrid/src/js/site_encode.service.js
index 6bb1d99..ae12ccf 100644
--- a/views/ngXosViews/serviceGrid/src/js/site_encode.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/site_encode.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/slices_encorder.service.js b/views/ngXosViews/serviceGrid/src/js/slices_encorder.service.js
index f900d98..8e8bf89 100644
--- a/views/ngXosViews/serviceGrid/src/js/slices_encorder.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/slices_encorder.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**
  * © OpenCORD
  *
diff --git a/views/ngXosViews/serviceGrid/src/js/tosca_encoder.service.js b/views/ngXosViews/serviceGrid/src/js/tosca_encoder.service.js
index 5798aca..962a69b 100644
--- a/views/ngXosViews/serviceGrid/src/js/tosca_encoder.service.js
+++ b/views/ngXosViews/serviceGrid/src/js/tosca_encoder.service.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function () {
   'use strict';
 
diff --git a/views/ngXosViews/serviceGrid/src/sass/main.scss b/views/ngXosViews/serviceGrid/src/sass/main.scss
index e52991a..be2c74d 100644
--- a/views/ngXosViews/serviceGrid/src/sass/main.scss
+++ b/views/ngXosViews/serviceGrid/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 @import './side-panel.scss';
 
diff --git a/views/ngXosViews/serviceGrid/src/sass/side-panel.scss b/views/ngXosViews/serviceGrid/src/sass/side-panel.scss
index 0d5d508..77b7c17 100644
--- a/views/ngXosViews/serviceGrid/src/sass/side-panel.scss
+++ b/views/ngXosViews/serviceGrid/src/sass/side-panel.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 xos-side-panel{
diff --git a/views/ngXosViews/serviceGrid/src/templates/service-graph.tpl.html b/views/ngXosViews/serviceGrid/src/templates/service-graph.tpl.html
index 3dde7f7..a4afde2 100644
--- a/views/ngXosViews/serviceGrid/src/templates/service-graph.tpl.html
+++ b/views/ngXosViews/serviceGrid/src/templates/service-graph.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-sm-10">
     <h1>Graph</h1>
diff --git a/views/ngXosViews/serviceGrid/src/templates/service-grid.tpl.html b/views/ngXosViews/serviceGrid/src/templates/service-grid.tpl.html
index ea9f8db..22769c6 100644
--- a/views/ngXosViews/serviceGrid/src/templates/service-grid.tpl.html
+++ b/views/ngXosViews/serviceGrid/src/templates/service-grid.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-md-10 table-responsive">
     <xos-table config="vm.tableConfig" data="vm.services"></xos-table>
diff --git a/views/ngXosViews/serviceGrid/src/templates/users-list.tpl.html b/views/ngXosViews/serviceGrid/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/serviceGrid/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/serviceGrid/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/subscribers/gulp/build.js b/views/ngXosViews/subscribers/gulp/build.js
index dcd3fc3..3ac0214 100644
--- a/views/ngXosViews/subscribers/gulp/build.js
+++ b/views/ngXosViews/subscribers/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/subscribers/gulp/server.js b/views/ngXosViews/subscribers/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/subscribers/gulp/server.js
+++ b/views/ngXosViews/subscribers/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/subscribers/gulpfile.js b/views/ngXosViews/subscribers/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/subscribers/gulpfile.js
+++ b/views/ngXosViews/subscribers/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/subscribers/karma.conf.js b/views/ngXosViews/subscribers/karma.conf.js
index 02c1cb1..0b22bc9 100644
--- a/views/ngXosViews/subscribers/karma.conf.js
+++ b/views/ngXosViews/subscribers/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/subscribers/spec/sample.test.js b/views/ngXosViews/subscribers/spec/sample.test.js
index 1b7796c..bf9149d 100644
--- a/views/ngXosViews/subscribers/spec/sample.test.js
+++ b/views/ngXosViews/subscribers/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The Subscriber View', () => {
diff --git a/views/ngXosViews/subscribers/src/css/dev.css b/views/ngXosViews/subscribers/src/css/dev.css
index 76c2d5b..7ea0802 100644
--- a/views/ngXosViews/subscribers/src/css/dev.css
+++ b/views/ngXosViews/subscribers/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosSubscribers{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/subscribers/src/css/main.css b/views/ngXosViews/subscribers/src/css/main.css
index e69de29..e41be01 100644
--- a/views/ngXosViews/subscribers/src/css/main.css
+++ b/views/ngXosViews/subscribers/src/css/main.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/views/ngXosViews/subscribers/src/index.html b/views/ngXosViews/subscribers/src/index.html
index a234964..59c2982 100644
--- a/views/ngXosViews/subscribers/src/index.html
+++ b/views/ngXosViews/subscribers/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/subscribers/src/js/main.js b/views/ngXosViews/subscribers/src/js/main.js
index 203e9ff..7fda96a 100644
--- a/views/ngXosViews/subscribers/src/js/main.js
+++ b/views/ngXosViews/subscribers/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.subscribers', [
diff --git a/views/ngXosViews/subscribers/src/sass/main.scss b/views/ngXosViews/subscribers/src/sass/main.scss
index 5f68212..b2dbbe8 100644
--- a/views/ngXosViews/subscribers/src/sass/main.scss
+++ b/views/ngXosViews/subscribers/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosSubscribers {
diff --git a/views/ngXosViews/subscribers/src/templates/subscribers-list.tpl.html b/views/ngXosViews/subscribers/src/templates/subscribers-list.tpl.html
index d6e755b..ed23ce9 100644
--- a/views/ngXosViews/subscribers/src/templates/subscribers-list.tpl.html
+++ b/views/ngXosViews/subscribers/src/templates/subscribers-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-smart-table config="vm.smartTableConfig"></xos-smart-table>
\ No newline at end of file
diff --git a/views/ngXosViews/subscribers/src/templates/users-list.tpl.html b/views/ngXosViews/subscribers/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/subscribers/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/subscribers/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/synchronizerNotifier/gulp/build.js b/views/ngXosViews/synchronizerNotifier/gulp/build.js
index e90581d..a8ad95b 100644
--- a/views/ngXosViews/synchronizerNotifier/gulp/build.js
+++ b/views/ngXosViews/synchronizerNotifier/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/synchronizerNotifier/gulp/server.js b/views/ngXosViews/synchronizerNotifier/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/synchronizerNotifier/gulp/server.js
+++ b/views/ngXosViews/synchronizerNotifier/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/synchronizerNotifier/gulpfile.js b/views/ngXosViews/synchronizerNotifier/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/synchronizerNotifier/gulpfile.js
+++ b/views/ngXosViews/synchronizerNotifier/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/synchronizerNotifier/karma.conf.js b/views/ngXosViews/synchronizerNotifier/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/synchronizerNotifier/karma.conf.js
+++ b/views/ngXosViews/synchronizerNotifier/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/synchronizerNotifier/spec/notification.test.js b/views/ngXosViews/synchronizerNotifier/spec/notification.test.js
index 265b7b9..0e9a67b 100644
--- a/views/ngXosViews/synchronizerNotifier/spec/notification.test.js
+++ b/views/ngXosViews/synchronizerNotifier/spec/notification.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The Synchronizer Notification Panel', () => {
diff --git a/views/ngXosViews/synchronizerNotifier/src/css/dev.css b/views/ngXosViews/synchronizerNotifier/src/css/dev.css
index 2d00c8e..312313f 100644
--- a/views/ngXosViews/synchronizerNotifier/src/css/dev.css
+++ b/views/ngXosViews/synchronizerNotifier/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosSynchronizerNotifier{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/synchronizerNotifier/src/css/main.css b/views/ngXosViews/synchronizerNotifier/src/css/main.css
index 88a08e7..5b35a68 100644
--- a/views/ngXosViews/synchronizerNotifier/src/css/main.css
+++ b/views/ngXosViews/synchronizerNotifier/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosSynchronizerNotifier {
   float: left; }
   #xosSynchronizerNotifier .alert {
diff --git a/views/ngXosViews/synchronizerNotifier/src/index.html b/views/ngXosViews/synchronizerNotifier/src/index.html
index 5205b9d..780a367 100644
--- a/views/ngXosViews/synchronizerNotifier/src/index.html
+++ b/views/ngXosViews/synchronizerNotifier/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/synchronizerNotifier/src/js/main.js b/views/ngXosViews/synchronizerNotifier/src/js/main.js
index 499d474..f0077f2 100644
--- a/views/ngXosViews/synchronizerNotifier/src/js/main.js
+++ b/views/ngXosViews/synchronizerNotifier/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.synchronizerNotifier', [
diff --git a/views/ngXosViews/synchronizerNotifier/src/sass/main.scss b/views/ngXosViews/synchronizerNotifier/src/sass/main.scss
index d101d76..a93f38b 100644
--- a/views/ngXosViews/synchronizerNotifier/src/sass/main.scss
+++ b/views/ngXosViews/synchronizerNotifier/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosSynchronizerNotifier {
diff --git a/views/ngXosViews/synchronizerNotifier/src/templates/sync-status.tpl.html b/views/ngXosViews/synchronizerNotifier/src/templates/sync-status.tpl.html
index cbd794e..7fabbe4 100644
--- a/views/ngXosViews/synchronizerNotifier/src/templates/sync-status.tpl.html
+++ b/views/ngXosViews/synchronizerNotifier/src/templates/sync-status.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="sync-status-container">
   <div class="btn btn-default" ng-click="vm.showNotificationPanel = !vm.showNotificationPanel">
     <i class="glyphicon glyphicon-inbox"></i>
diff --git a/views/ngXosViews/synchronizerNotifier/src/templates/users-list.tpl.html b/views/ngXosViews/synchronizerNotifier/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/synchronizerNotifier/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/synchronizerNotifier/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/tenant/gulp/build.js b/views/ngXosViews/tenant/gulp/build.js
index 7f8ade7..2bdbe9e 100644
--- a/views/ngXosViews/tenant/gulp/build.js
+++ b/views/ngXosViews/tenant/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/tenant/gulp/server.js b/views/ngXosViews/tenant/gulp/server.js
index f647ec7..4937186 100644
--- a/views/ngXosViews/tenant/gulp/server.js
+++ b/views/ngXosViews/tenant/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/tenant/gulpfile.js b/views/ngXosViews/tenant/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/tenant/gulpfile.js
+++ b/views/ngXosViews/tenant/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/tenant/karma.conf.js b/views/ngXosViews/tenant/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/tenant/karma.conf.js
+++ b/views/ngXosViews/tenant/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/tenant/spec/sample.test.js b/views/ngXosViews/tenant/spec/sample.test.js
index ba28499..04d1f62 100644
--- a/views/ngXosViews/tenant/spec/sample.test.js
+++ b/views/ngXosViews/tenant/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('Tenant View', () => {
diff --git a/views/ngXosViews/tenant/src/css/dev.css b/views/ngXosViews/tenant/src/css/dev.css
index 0263242..1177a33 100644
--- a/views/ngXosViews/tenant/src/css/dev.css
+++ b/views/ngXosViews/tenant/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosTenant{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/tenant/src/css/main.css b/views/ngXosViews/tenant/src/css/main.css
index f753cea..e2a3de3 100644
--- a/views/ngXosViews/tenant/src/css/main.css
+++ b/views/ngXosViews/tenant/src/css/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosTenant [ui-view] {
   margin-bottom: 100px; }
 
diff --git a/views/ngXosViews/tenant/src/index.html b/views/ngXosViews/tenant/src/index.html
index d8ebd82..7331d5a 100644
--- a/views/ngXosViews/tenant/src/index.html
+++ b/views/ngXosViews/tenant/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/tenant/src/js/createslice.js b/views/ngXosViews/tenant/src/js/createslice.js
index 912f7c9..d0060af 100644
--- a/views/ngXosViews/tenant/src/js/createslice.js
+++ b/views/ngXosViews/tenant/src/js/createslice.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Created by arpit on 7/7/2016.

  */

diff --git a/views/ngXosViews/tenant/src/js/main.js b/views/ngXosViews/tenant/src/js/main.js
index e3dd54a..885e863 100644
--- a/views/ngXosViews/tenant/src/js/main.js
+++ b/views/ngXosViews/tenant/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';

 

 angular.module('xos.tenant', [

diff --git a/views/ngXosViews/tenant/src/js/sitedetail.js b/views/ngXosViews/tenant/src/js/sitedetail.js
index c29a904..723fb4f 100644
--- a/views/ngXosViews/tenant/src/js/sitedetail.js
+++ b/views/ngXosViews/tenant/src/js/sitedetail.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Created by arpit on 7/7/2016.

  */

diff --git a/views/ngXosViews/tenant/src/sass/main.scss b/views/ngXosViews/tenant/src/sass/main.scss
index 12cb23e..60dff6b 100644
--- a/views/ngXosViews/tenant/src/sass/main.scss
+++ b/views/ngXosViews/tenant/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 @import '../../../../../views/style/sass/bootstrap/bootstrap/_variables.scss';
 
diff --git a/views/ngXosViews/tenant/src/templates/createslice.html b/views/ngXosViews/tenant/src/templates/createslice.html
index b04ee28..ddf5342 100644
--- a/views/ngXosViews/tenant/src/templates/createslice.html
+++ b/views/ngXosViews/tenant/src/templates/createslice.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!--<xos-table config="cs.tableConfig" data="cs.sites"></xos-table>-->
 <h2>Slice Details</h2>
 <hr></hr>
diff --git a/views/ngXosViews/tenant/src/templates/slicelist.html b/views/ngXosViews/tenant/src/templates/slicelist.html
index fb42315..e6cfa18 100644
--- a/views/ngXosViews/tenant/src/templates/slicelist.html
+++ b/views/ngXosViews/tenant/src/templates/slicelist.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!--<span ng-bind="siteNameSe"></span>-->
 <!--<xos-field></xos-field>-->
 <a class="addlink btn btn-info" ui-sref="createslice({site: sl.siteId})"><i class="glyphicon glyphicon-plus-sign"></i> Create Slice</a>
diff --git a/views/ngXosViews/tenant/src/templates/users-list.tpl.html b/views/ngXosViews/tenant/src/templates/users-list.tpl.html
index 1242734..617c09c 100644
--- a/views/ngXosViews/tenant/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/tenant/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.site_list"></xos-table>
\ No newline at end of file
diff --git a/views/ngXosViews/truckroll/gulp/build.js b/views/ngXosViews/truckroll/gulp/build.js
index 17f3be1..5328ec8 100644
--- a/views/ngXosViews/truckroll/gulp/build.js
+++ b/views/ngXosViews/truckroll/gulp/build.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // BUILD
diff --git a/views/ngXosViews/truckroll/gulp/server.js b/views/ngXosViews/truckroll/gulp/server.js
index 36fdded..a1e725b 100644
--- a/views/ngXosViews/truckroll/gulp/server.js
+++ b/views/ngXosViews/truckroll/gulp/server.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/truckroll/gulpfile.js b/views/ngXosViews/truckroll/gulpfile.js
index c825df8..1fbdb34 100644
--- a/views/ngXosViews/truckroll/gulpfile.js
+++ b/views/ngXosViews/truckroll/gulpfile.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 var gulp = require('gulp');
diff --git a/views/ngXosViews/truckroll/karma.conf.js b/views/ngXosViews/truckroll/karma.conf.js
index e5abf39..d333b91 100644
--- a/views/ngXosViews/truckroll/karma.conf.js
+++ b/views/ngXosViews/truckroll/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/views/ngXosViews/truckroll/spec/sample.test.js b/views/ngXosViews/truckroll/spec/sample.test.js
index 52ebe84..ec88f9c 100644
--- a/views/ngXosViews/truckroll/spec/sample.test.js
+++ b/views/ngXosViews/truckroll/spec/sample.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The User List', () => {
diff --git a/views/ngXosViews/truckroll/src/css/dev.css b/views/ngXosViews/truckroll/src/css/dev.css
index 5842388..a1905f7 100644
--- a/views/ngXosViews/truckroll/src/css/dev.css
+++ b/views/ngXosViews/truckroll/src/css/dev.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosTruckroll{
   position: absolute;
   top: 100px;
diff --git a/views/ngXosViews/truckroll/src/css/main.css b/views/ngXosViews/truckroll/src/css/main.css
index e69de29..e41be01 100644
--- a/views/ngXosViews/truckroll/src/css/main.css
+++ b/views/ngXosViews/truckroll/src/css/main.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/views/ngXosViews/truckroll/src/css/truckroll.css b/views/ngXosViews/truckroll/src/css/truckroll.css
index 8ac0369..b4d59c7 100644
--- a/views/ngXosViews/truckroll/src/css/truckroll.css
+++ b/views/ngXosViews/truckroll/src/css/truckroll.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 .row + .row {
   margin-top: 20px;
 }
diff --git a/views/ngXosViews/truckroll/src/index.html b/views/ngXosViews/truckroll/src/index.html
index 567d4e4..a02ee75 100644
--- a/views/ngXosViews/truckroll/src/index.html
+++ b/views/ngXosViews/truckroll/src/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- bower:css -->
 <link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
diff --git a/views/ngXosViews/truckroll/src/js/main.js b/views/ngXosViews/truckroll/src/js/main.js
index 6aee06d..3076406 100644
--- a/views/ngXosViews/truckroll/src/js/main.js
+++ b/views/ngXosViews/truckroll/src/js/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('xos.truckroll', [
diff --git a/views/ngXosViews/truckroll/src/sass/main.scss b/views/ngXosViews/truckroll/src/sass/main.scss
index d87a953..c3f1d1c 100644
--- a/views/ngXosViews/truckroll/src/sass/main.scss
+++ b/views/ngXosViews/truckroll/src/sass/main.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../../../../style/sass/lib/_variables.scss';
 
 #xosTruckroll {
diff --git a/views/ngXosViews/truckroll/src/templates/truckroll.tpl.html b/views/ngXosViews/truckroll/src/templates/truckroll.tpl.html
index f0c2dbe..3957e6d 100644
--- a/views/ngXosViews/truckroll/src/templates/truckroll.tpl.html
+++ b/views/ngXosViews/truckroll/src/templates/truckroll.tpl.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="row">
   <div class="col-xs-12">
     <h2>Virtual Truck Roll</h2>
diff --git a/views/ngXosViews/truckroll/src/templates/users-list.tpl.html b/views/ngXosViews/truckroll/src/templates/users-list.tpl.html
index 1fee0e2..6d26747 100644
--- a/views/ngXosViews/truckroll/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/truckroll/src/templates/users-list.tpl.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <xos-table config="vm.tableConfig" data="vm.users"></xos-table>
\ No newline at end of file
diff --git a/views/style/bs-config.js b/views/style/bs-config.js
index ce55e3d..12119b6 100644
--- a/views/style/bs-config.js
+++ b/views/style/bs-config.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 module.exports = {
   "files": [
     '../../xos/core/dashboard/*.html',
diff --git a/views/style/sass/bootstrap/_bootstrap-compass.scss b/views/style/sass/bootstrap/_bootstrap-compass.scss
index 8fbc3cd..e8c3a80 100644
--- a/views/style/sass/bootstrap/_bootstrap-compass.scss
+++ b/views/style/sass/bootstrap/_bootstrap-compass.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @function twbs-font-path($path) {
   @return font-url($path, true);
 }
diff --git a/views/style/sass/bootstrap/_bootstrap-mincer.scss b/views/style/sass/bootstrap/_bootstrap-mincer.scss
index 0c4655e..3b4051b 100644
--- a/views/style/sass/bootstrap/_bootstrap-mincer.scss
+++ b/views/style/sass/bootstrap/_bootstrap-mincer.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Mincer asset helper functions
 //
 // This must be imported into a .css.ejs.scss file.
diff --git a/views/style/sass/bootstrap/_bootstrap-sprockets.scss b/views/style/sass/bootstrap/_bootstrap-sprockets.scss
index 9fffc1e..4c9a12d 100644
--- a/views/style/sass/bootstrap/_bootstrap-sprockets.scss
+++ b/views/style/sass/bootstrap/_bootstrap-sprockets.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @function twbs-font-path($path) {
   @return font-path($path);
 }
diff --git a/views/style/sass/bootstrap/_bootstrap.scss b/views/style/sass/bootstrap/_bootstrap.scss
index c773c8c..8f46fe9 100644
--- a/views/style/sass/bootstrap/_bootstrap.scss
+++ b/views/style/sass/bootstrap/_bootstrap.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*!
  * Bootstrap v3.3.6 (http://getbootstrap.com)
  * Copyright 2011-2015 Twitter, Inc.
diff --git a/views/style/sass/bootstrap/bootstrap/_alerts.scss b/views/style/sass/bootstrap/bootstrap/_alerts.scss
index 7d1e1fd..234130a 100644
--- a/views/style/sass/bootstrap/bootstrap/_alerts.scss
+++ b/views/style/sass/bootstrap/bootstrap/_alerts.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Alerts
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_badges.scss b/views/style/sass/bootstrap/bootstrap/_badges.scss
index 70002e0..67289f9 100644
--- a/views/style/sass/bootstrap/bootstrap/_badges.scss
+++ b/views/style/sass/bootstrap/bootstrap/_badges.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Badges
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_breadcrumbs.scss b/views/style/sass/bootstrap/bootstrap/_breadcrumbs.scss
index b61f0c7..3408137 100644
--- a/views/style/sass/bootstrap/bootstrap/_breadcrumbs.scss
+++ b/views/style/sass/bootstrap/bootstrap/_breadcrumbs.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Breadcrumbs
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_button-groups.scss b/views/style/sass/bootstrap/bootstrap/_button-groups.scss
index baaacc4..9640ea2 100644
--- a/views/style/sass/bootstrap/bootstrap/_button-groups.scss
+++ b/views/style/sass/bootstrap/bootstrap/_button-groups.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Button groups
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_buttons.scss b/views/style/sass/bootstrap/bootstrap/_buttons.scss
index 6452b70..80e28ab 100644
--- a/views/style/sass/bootstrap/bootstrap/_buttons.scss
+++ b/views/style/sass/bootstrap/bootstrap/_buttons.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Buttons
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_carousel.scss b/views/style/sass/bootstrap/bootstrap/_carousel.scss
index 753d881..91bca74 100644
--- a/views/style/sass/bootstrap/bootstrap/_carousel.scss
+++ b/views/style/sass/bootstrap/bootstrap/_carousel.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Carousel
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_close.scss b/views/style/sass/bootstrap/bootstrap/_close.scss
index 3b74d8a..6d3f345 100644
--- a/views/style/sass/bootstrap/bootstrap/_close.scss
+++ b/views/style/sass/bootstrap/bootstrap/_close.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Close icons
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_code.scss b/views/style/sass/bootstrap/bootstrap/_code.scss
index caa5f06..79cdb70 100644
--- a/views/style/sass/bootstrap/bootstrap/_code.scss
+++ b/views/style/sass/bootstrap/bootstrap/_code.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Code (inline and block)
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_component-animations.scss b/views/style/sass/bootstrap/bootstrap/_component-animations.scss
index ca3b43c..62efb80 100644
--- a/views/style/sass/bootstrap/bootstrap/_component-animations.scss
+++ b/views/style/sass/bootstrap/bootstrap/_component-animations.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Component animations
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_dropdowns.scss b/views/style/sass/bootstrap/bootstrap/_dropdowns.scss
index aac8459..06a4f52 100644
--- a/views/style/sass/bootstrap/bootstrap/_dropdowns.scss
+++ b/views/style/sass/bootstrap/bootstrap/_dropdowns.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Dropdown menus
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_forms.scss b/views/style/sass/bootstrap/bootstrap/_forms.scss
index 11ba109..4a10f55 100644
--- a/views/style/sass/bootstrap/bootstrap/_forms.scss
+++ b/views/style/sass/bootstrap/bootstrap/_forms.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Forms
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_glyphicons.scss b/views/style/sass/bootstrap/bootstrap/_glyphicons.scss
index 07a0fc9..0eccdef 100644
--- a/views/style/sass/bootstrap/bootstrap/_glyphicons.scss
+++ b/views/style/sass/bootstrap/bootstrap/_glyphicons.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Glyphicons for Bootstrap
 //
diff --git a/views/style/sass/bootstrap/bootstrap/_grid.scss b/views/style/sass/bootstrap/bootstrap/_grid.scss
index b15ca27..b97dcd5 100644
--- a/views/style/sass/bootstrap/bootstrap/_grid.scss
+++ b/views/style/sass/bootstrap/bootstrap/_grid.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Grid system
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_input-groups.scss b/views/style/sass/bootstrap/bootstrap/_input-groups.scss
index f7c1d60..2addf33 100644
--- a/views/style/sass/bootstrap/bootstrap/_input-groups.scss
+++ b/views/style/sass/bootstrap/bootstrap/_input-groups.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Input groups
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_jumbotron.scss b/views/style/sass/bootstrap/bootstrap/_jumbotron.scss
index a27da47..82e9bc0 100644
--- a/views/style/sass/bootstrap/bootstrap/_jumbotron.scss
+++ b/views/style/sass/bootstrap/bootstrap/_jumbotron.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Jumbotron
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_labels.scss b/views/style/sass/bootstrap/bootstrap/_labels.scss
index 42ed6ea..8002da8 100644
--- a/views/style/sass/bootstrap/bootstrap/_labels.scss
+++ b/views/style/sass/bootstrap/bootstrap/_labels.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Labels
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_list-group.scss b/views/style/sass/bootstrap/bootstrap/_list-group.scss
index 7cb83aa..75fe18c 100644
--- a/views/style/sass/bootstrap/bootstrap/_list-group.scss
+++ b/views/style/sass/bootstrap/bootstrap/_list-group.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // List groups
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_media.scss b/views/style/sass/bootstrap/bootstrap/_media.scss
index 8c835e8..6f35185 100644
--- a/views/style/sass/bootstrap/bootstrap/_media.scss
+++ b/views/style/sass/bootstrap/bootstrap/_media.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 .media {
   // Proper spacing between instances of .media
   margin-top: 15px;
diff --git a/views/style/sass/bootstrap/bootstrap/_mixins.scss b/views/style/sass/bootstrap/bootstrap/_mixins.scss
index 78cd5aa..dbfaad2 100644
--- a/views/style/sass/bootstrap/bootstrap/_mixins.scss
+++ b/views/style/sass/bootstrap/bootstrap/_mixins.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Mixins
 // --------------------------------------------------
 
diff --git a/views/style/sass/bootstrap/bootstrap/_modals.scss b/views/style/sass/bootstrap/bootstrap/_modals.scss
index 823870f..d7fd62f 100644
--- a/views/style/sass/bootstrap/bootstrap/_modals.scss
+++ b/views/style/sass/bootstrap/bootstrap/_modals.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Modals
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_navbar.scss b/views/style/sass/bootstrap/bootstrap/_navbar.scss
index 11e5c01..a15463d 100644
--- a/views/style/sass/bootstrap/bootstrap/_navbar.scss
+++ b/views/style/sass/bootstrap/bootstrap/_navbar.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Navbars
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_navs.scss b/views/style/sass/bootstrap/bootstrap/_navs.scss
index 9d369f3..6ae824e 100644
--- a/views/style/sass/bootstrap/bootstrap/_navs.scss
+++ b/views/style/sass/bootstrap/bootstrap/_navs.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Navs
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_normalize.scss b/views/style/sass/bootstrap/bootstrap/_normalize.scss
index 9dddf73..cf5eab5 100644
--- a/views/style/sass/bootstrap/bootstrap/_normalize.scss
+++ b/views/style/sass/bootstrap/bootstrap/_normalize.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
 
 //
diff --git a/views/style/sass/bootstrap/bootstrap/_pager.scss b/views/style/sass/bootstrap/bootstrap/_pager.scss
index c234217..90ab92c 100644
--- a/views/style/sass/bootstrap/bootstrap/_pager.scss
+++ b/views/style/sass/bootstrap/bootstrap/_pager.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Pager pagination
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_pagination.scss b/views/style/sass/bootstrap/bootstrap/_pagination.scss
index fecfa9c..b6f4d06 100644
--- a/views/style/sass/bootstrap/bootstrap/_pagination.scss
+++ b/views/style/sass/bootstrap/bootstrap/_pagination.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Pagination (multiple pages)
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_panels.scss b/views/style/sass/bootstrap/bootstrap/_panels.scss
index be9410f..a072e6d 100644
--- a/views/style/sass/bootstrap/bootstrap/_panels.scss
+++ b/views/style/sass/bootstrap/bootstrap/_panels.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Panels
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_popovers.scss b/views/style/sass/bootstrap/bootstrap/_popovers.scss
index 9b90a2e..4efd0e0 100644
--- a/views/style/sass/bootstrap/bootstrap/_popovers.scss
+++ b/views/style/sass/bootstrap/bootstrap/_popovers.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Popovers
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_print.scss b/views/style/sass/bootstrap/bootstrap/_print.scss
index 66e54ab..efbb344 100644
--- a/views/style/sass/bootstrap/bootstrap/_print.scss
+++ b/views/style/sass/bootstrap/bootstrap/_print.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
 
 // ==========================================================================
diff --git a/views/style/sass/bootstrap/bootstrap/_progress-bars.scss b/views/style/sass/bootstrap/bootstrap/_progress-bars.scss
index 343df63..bdbf920 100644
--- a/views/style/sass/bootstrap/bootstrap/_progress-bars.scss
+++ b/views/style/sass/bootstrap/bootstrap/_progress-bars.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Progress bars
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_responsive-embed.scss b/views/style/sass/bootstrap/bootstrap/_responsive-embed.scss
index 080a511..a6b2ce4 100644
--- a/views/style/sass/bootstrap/bootstrap/_responsive-embed.scss
+++ b/views/style/sass/bootstrap/bootstrap/_responsive-embed.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Embeds responsive
 //
 // Credit: Nicolas Gallagher and SUIT CSS.
diff --git a/views/style/sass/bootstrap/bootstrap/_responsive-utilities.scss b/views/style/sass/bootstrap/bootstrap/_responsive-utilities.scss
index f3f0c83..1d4fa87 100644
--- a/views/style/sass/bootstrap/bootstrap/_responsive-utilities.scss
+++ b/views/style/sass/bootstrap/bootstrap/_responsive-utilities.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Responsive: Utility classes
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_scaffolding.scss b/views/style/sass/bootstrap/bootstrap/_scaffolding.scss
index 83adb5d..b9bee43 100644
--- a/views/style/sass/bootstrap/bootstrap/_scaffolding.scss
+++ b/views/style/sass/bootstrap/bootstrap/_scaffolding.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Scaffolding
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_tables.scss b/views/style/sass/bootstrap/bootstrap/_tables.scss
index affcc58..be51b0a 100644
--- a/views/style/sass/bootstrap/bootstrap/_tables.scss
+++ b/views/style/sass/bootstrap/bootstrap/_tables.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Tables
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_theme.scss b/views/style/sass/bootstrap/bootstrap/_theme.scss
index c64b3d6..5e5bd5d 100644
--- a/views/style/sass/bootstrap/bootstrap/_theme.scss
+++ b/views/style/sass/bootstrap/bootstrap/_theme.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*!
  * Bootstrap v3.3.6 (http://getbootstrap.com)
  * Copyright 2011-2015 Twitter, Inc.
diff --git a/views/style/sass/bootstrap/bootstrap/_thumbnails.scss b/views/style/sass/bootstrap/bootstrap/_thumbnails.scss
index da0e1e7..046a8df 100644
--- a/views/style/sass/bootstrap/bootstrap/_thumbnails.scss
+++ b/views/style/sass/bootstrap/bootstrap/_thumbnails.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Thumbnails
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_tooltip.scss b/views/style/sass/bootstrap/bootstrap/_tooltip.scss
index f0c1658..d5932c2 100644
--- a/views/style/sass/bootstrap/bootstrap/_tooltip.scss
+++ b/views/style/sass/bootstrap/bootstrap/_tooltip.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Tooltips
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_type.scss b/views/style/sass/bootstrap/bootstrap/_type.scss
index 620796a..e473e81 100644
--- a/views/style/sass/bootstrap/bootstrap/_type.scss
+++ b/views/style/sass/bootstrap/bootstrap/_type.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Typography
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_utilities.scss b/views/style/sass/bootstrap/bootstrap/_utilities.scss
index 8c99c71..af86900 100644
--- a/views/style/sass/bootstrap/bootstrap/_utilities.scss
+++ b/views/style/sass/bootstrap/bootstrap/_utilities.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Utility classes
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/_variables.scss b/views/style/sass/bootstrap/bootstrap/_variables.scss
index 0703b0c..26f9b0b 100644
--- a/views/style/sass/bootstrap/bootstrap/_variables.scss
+++ b/views/style/sass/bootstrap/bootstrap/_variables.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 $bootstrap-sass-asset-helper: false !default;
 //
 // Variables
diff --git a/views/style/sass/bootstrap/bootstrap/_wells.scss b/views/style/sass/bootstrap/bootstrap/_wells.scss
index b865711..088599d 100644
--- a/views/style/sass/bootstrap/bootstrap/_wells.scss
+++ b/views/style/sass/bootstrap/bootstrap/_wells.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 //
 // Wells
 // --------------------------------------------------
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_alerts.scss b/views/style/sass/bootstrap/bootstrap/mixins/_alerts.scss
index 3faf0b5..df664d3 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_alerts.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_alerts.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Alerts
 
 @mixin alert-variant($background, $border, $text-color) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_background-variant.scss b/views/style/sass/bootstrap/bootstrap/mixins/_background-variant.scss
index 4c7769e..57bbeaa 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_background-variant.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_background-variant.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Contextual backgrounds
 
 // [converter] $parent hack
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_border-radius.scss b/views/style/sass/bootstrap/bootstrap/mixins/_border-radius.scss
index ce19499..a5b96ef 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_border-radius.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_border-radius.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Single side border-radius
 
 @mixin border-top-radius($radius) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_buttons.scss b/views/style/sass/bootstrap/bootstrap/mixins/_buttons.scss
index b93f84b..920a972 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_buttons.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_buttons.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Button variants
 //
 // Easily pump out default styles, as well as :hover, :focus, :active,
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_center-block.scss b/views/style/sass/bootstrap/bootstrap/mixins/_center-block.scss
index e06fb5e..11accdd 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_center-block.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_center-block.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Center-align a block level element
 
 @mixin center-block() {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_clearfix.scss b/views/style/sass/bootstrap/bootstrap/mixins/_clearfix.scss
index dc3e2ab..64ec11b 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_clearfix.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_clearfix.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Clearfix
 //
 // For modern browsers
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_forms.scss b/views/style/sass/bootstrap/bootstrap/mixins/_forms.scss
index 277aa5f..36b8c1f 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_forms.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_forms.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Form validation states
 //
 // Used in forms.less to generate the form validation CSS for warnings, errors,
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_gradients.scss b/views/style/sass/bootstrap/bootstrap/mixins/_gradients.scss
index a8939f5..fcbb055 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_gradients.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_gradients.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Gradients
 
 
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_grid-framework.scss b/views/style/sass/bootstrap/bootstrap/mixins/_grid-framework.scss
index 16d038c..240776e 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_grid-framework.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_grid-framework.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Framework grid generation
 //
 // Used only by Bootstrap to generate the correct number of grid classes given
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_grid.scss b/views/style/sass/bootstrap/bootstrap/mixins/_grid.scss
index 59551da..6c304d2 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_grid.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_grid.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Grid system
 //
 // Generate semantic grid columns with these mixins.
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_hide-text.scss b/views/style/sass/bootstrap/bootstrap/mixins/_hide-text.scss
index 1767e02..59edbcc 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_hide-text.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_hide-text.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // CSS image replacement
 //
 // Heads up! v3 launched with only `.hide-text()`, but per our pattern for
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_image.scss b/views/style/sass/bootstrap/bootstrap/mixins/_image.scss
index c8dcf5e..a2b1fb1 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_image.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_image.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Image Mixins
 // - Responsive image
 // - Retina image
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_labels.scss b/views/style/sass/bootstrap/bootstrap/mixins/_labels.scss
index eda6dfd..2b2c265 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_labels.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_labels.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Labels
 
 @mixin label-variant($color) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_list-group.scss b/views/style/sass/bootstrap/bootstrap/mixins/_list-group.scss
index c478eeb..b794daa 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_list-group.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_list-group.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // List Groups
 
 @mixin list-group-item-variant($state, $background, $color) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_nav-divider.scss b/views/style/sass/bootstrap/bootstrap/mixins/_nav-divider.scss
index 2e6da02..cf5a947 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_nav-divider.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_nav-divider.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Horizontal dividers
 //
 // Dividers (basically an hr) within dropdowns and nav lists
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_nav-vertical-align.scss b/views/style/sass/bootstrap/bootstrap/mixins/_nav-vertical-align.scss
index c8fbf1a..3ecd120 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_nav-vertical-align.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_nav-vertical-align.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Navbar vertical align
 //
 // Vertically center elements in the navbar.
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_opacity.scss b/views/style/sass/bootstrap/bootstrap/mixins/_opacity.scss
index 88e9a57..c54e2f8 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_opacity.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_opacity.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Opacity
 
 @mixin opacity($opacity) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_pagination.scss b/views/style/sass/bootstrap/bootstrap/mixins/_pagination.scss
index d4a5404..9a12cf3 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_pagination.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_pagination.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Pagination
 
 @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_panels.scss b/views/style/sass/bootstrap/bootstrap/mixins/_panels.scss
index 3ff31ae..bfbd248 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_panels.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_panels.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Panels
 
 @mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_progress-bar.scss b/views/style/sass/bootstrap/bootstrap/mixins/_progress-bar.scss
index 90a62af..ffa7e19 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_progress-bar.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_progress-bar.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Progress bars
 
 @mixin progress-bar-variant($color) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_reset-filter.scss b/views/style/sass/bootstrap/bootstrap/mixins/_reset-filter.scss
index bf73051..679a10d 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_reset-filter.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_reset-filter.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Reset filters for IE
 //
 // When you need to remove a gradient background, do not forget to use this to reset
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_reset-text.scss b/views/style/sass/bootstrap/bootstrap/mixins/_reset-text.scss
index c9c2841..2176cbc 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_reset-text.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_reset-text.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @mixin reset-text() {
   font-family: $font-family-base;
   // We deliberately do NOT reset font-size.
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_resize.scss b/views/style/sass/bootstrap/bootstrap/mixins/_resize.scss
index 83fa637..caf105e 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_resize.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_resize.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Resize anything
 
 @mixin resizable($direction) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_responsive-visibility.scss b/views/style/sass/bootstrap/bootstrap/mixins/_responsive-visibility.scss
index cbdf777..45d6e1b 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_responsive-visibility.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_responsive-visibility.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Responsive utilities
 
 //
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_size.scss b/views/style/sass/bootstrap/bootstrap/mixins/_size.scss
index abbe246..db160e5 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_size.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_size.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Sizing shortcuts
 
 @mixin size($width, $height) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_tab-focus.scss b/views/style/sass/bootstrap/bootstrap/mixins/_tab-focus.scss
index 7df0ae7..592b5b7 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_tab-focus.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_tab-focus.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // WebKit-style focus
 
 @mixin tab-focus() {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_table-row.scss b/views/style/sass/bootstrap/bootstrap/mixins/_table-row.scss
index 1367950..aca3446 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_table-row.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_table-row.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Tables
 
 @mixin table-row-variant($state, $background) {
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_text-emphasis.scss b/views/style/sass/bootstrap/bootstrap/mixins/_text-emphasis.scss
index 3b446c4..09a50c3 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_text-emphasis.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_text-emphasis.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Typography
 
 // [converter] $parent hack
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_text-overflow.scss b/views/style/sass/bootstrap/bootstrap/mixins/_text-overflow.scss
index 1593b25..ddc0eda 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_text-overflow.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_text-overflow.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Text overflow
 // Requires inline-block or block for proper styling
 
diff --git a/views/style/sass/bootstrap/bootstrap/mixins/_vendor-prefixes.scss b/views/style/sass/bootstrap/bootstrap/mixins/_vendor-prefixes.scss
index b3d0371..2cd1b1c 100644
--- a/views/style/sass/bootstrap/bootstrap/mixins/_vendor-prefixes.scss
+++ b/views/style/sass/bootstrap/bootstrap/mixins/_vendor-prefixes.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Vendor Prefixes
 //
 // All vendor mixins are deprecated as of v3.2.0 due to the introduction of
diff --git a/views/style/sass/lib/_variables.scss b/views/style/sass/lib/_variables.scss
index 63deb8c..fe41673 100644
--- a/views/style/sass/lib/_variables.scss
+++ b/views/style/sass/lib/_variables.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import '../bootstrap/bootstrap/_variables.scss';
 
 $icon-font-path: '/static/suit/bootstrap/fonts/';
diff --git a/views/style/sass/lib/breadcrumb.scss b/views/style/sass/lib/breadcrumb.scss
index 12bc437..8a56d1e 100644
--- a/views/style/sass/lib/breadcrumb.scss
+++ b/views/style/sass/lib/breadcrumb.scss
@@ -1,4 +1,22 @@
 
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
+
 .breadcrumb li a {
   font-weight:bold;
 }
\ No newline at end of file
diff --git a/views/style/sass/lib/footer.scss b/views/style/sass/lib/footer.scss
index 565c356..3ecb752 100644
--- a/views/style/sass/lib/footer.scss
+++ b/views/style/sass/lib/footer.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /************************* FOOTER *************************/
 
 .footer{
diff --git a/views/style/sass/lib/form.scss b/views/style/sass/lib/form.scss
index e8b74df..1f06c65 100644
--- a/views/style/sass/lib/form.scss
+++ b/views/style/sass/lib/form.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 .form-control {
     width: auto;
     min-width: 100%;
diff --git a/views/style/sass/lib/header.scss b/views/style/sass/lib/header.scss
index e219316..ddb9a72 100644
--- a/views/style/sass/lib/header.scss
+++ b/views/style/sass/lib/header.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* ************************* HEADER STYLE ************************* */
 
 .header{
diff --git a/views/style/sass/lib/login.scss b/views/style/sass/lib/login.scss
index ec79de2..a23761e 100644
--- a/views/style/sass/lib/login.scss
+++ b/views/style/sass/lib/login.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 body.login img.logo{
    width: 250px;
    display: block;
diff --git a/views/style/sass/lib/logout.scss b/views/style/sass/lib/logout.scss
index 0d2a5fb..b4c6176 100644
--- a/views/style/sass/lib/logout.scss
+++ b/views/style/sass/lib/logout.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 body.logout img.logo{
    width: 250px;
    display: block;
diff --git a/views/style/sass/lib/nav.scss b/views/style/sass/lib/nav.scss
index 0579ced..2897386 100644
--- a/views/style/sass/lib/nav.scss
+++ b/views/style/sass/lib/nav.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /************************* NAV *************************/
 
 @import "../bootstrap/bootstrap/_variables.scss";
diff --git a/views/style/sass/lib/table.scss b/views/style/sass/lib/table.scss
index 19aa21a..1fbe539 100644
--- a/views/style/sass/lib/table.scss
+++ b/views/style/sass/lib/table.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 table {
   th {
     a {
diff --git a/views/style/sass/lib/tabs.scss b/views/style/sass/lib/tabs.scss
index 5ed0640..b14eded 100644
--- a/views/style/sass/lib/tabs.scss
+++ b/views/style/sass/lib/tabs.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 .nav-tabs-suit li.active a,
 .nav-tabs-suit li.active a:hover,
 .nav-tabs-suit li a:hover,
diff --git a/views/style/sass/xos.scss b/views/style/sass/xos.scss
index 2d75403..1445836 100644
--- a/views/style/sass/xos.scss
+++ b/views/style/sass/xos.scss
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @import './lib/_variables';
 @import "./bootstrap/_bootstrap";
 @import "lib/header";
diff --git a/xos/api/__init__.py b/xos/api/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/api/__init__.py
+++ b/xos/api/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/api/examples/config.sh b/xos/api/examples/config.sh
index 79baa5f..d60dba0 100644
--- a/xos/api/examples/config.sh
+++ b/xos/api/examples/config.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #HOST=apt187.apt.emulab.net:9999
 HOST=clnode076.clemson.cloudlab.us:9999
 
diff --git a/xos/api/examples/cord/add_device_to_subscriber.sh b/xos/api/examples/cord/add_device_to_subscriber.sh
index 260b652..0b55c6f 100755
--- a/xos/api/examples/cord/add_device_to_subscriber.sh
+++ b/xos/api/examples/cord/add_device_to_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/add_subscriber.sh b/xos/api/examples/cord/add_subscriber.sh
index 498a7c6..8720469 100755
--- a/xos/api/examples/cord/add_subscriber.sh
+++ b/xos/api/examples/cord/add_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/add_volt_to_subscriber.sh b/xos/api/examples/cord/add_volt_to_subscriber.sh
index 377ad65..66fdac4 100755
--- a/xos/api/examples/cord/add_volt_to_subscriber.sh
+++ b/xos/api/examples/cord/add_volt_to_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/all.sh b/xos/api/examples/cord/all.sh
index 88fce47..c3a9f2f 100644
--- a/xos/api/examples/cord/all.sh
+++ b/xos/api/examples/cord/all.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 echo add_subscriber
 ./add_subscriber.sh
 echo -e "\n update_subscriber"
diff --git a/xos/api/examples/cord/config.sh b/xos/api/examples/cord/config.sh
index 92d703c..12d857c 100644
--- a/xos/api/examples/cord/config.sh
+++ b/xos/api/examples/cord/config.sh
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # see config.sh in the parent directory
 source ../config.sh
diff --git a/xos/api/examples/cord/delete_subscriber.sh b/xos/api/examples/cord/delete_subscriber.sh
index 0b897f2..604ad88 100755
--- a/xos/api/examples/cord/delete_subscriber.sh
+++ b/xos/api/examples/cord/delete_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/delete_subscriber_device.sh b/xos/api/examples/cord/delete_subscriber_device.sh
index 13c357f..08c59b6 100755
--- a/xos/api/examples/cord/delete_subscriber_device.sh
+++ b/xos/api/examples/cord/delete_subscriber_device.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/delete_volt_from_subscriber.sh b/xos/api/examples/cord/delete_volt_from_subscriber.sh
index c3acd2e..1ac99c0 100755
--- a/xos/api/examples/cord/delete_volt_from_subscriber.sh
+++ b/xos/api/examples/cord/delete_volt_from_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/get_subscriber.sh b/xos/api/examples/cord/get_subscriber.sh
index d1c6c29..73cc7fe 100755
--- a/xos/api/examples/cord/get_subscriber.sh
+++ b/xos/api/examples/cord/get_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/get_subscriber_device_feature.sh b/xos/api/examples/cord/get_subscriber_device_feature.sh
index 7c02c05..3da9dbf 100755
--- a/xos/api/examples/cord/get_subscriber_device_feature.sh
+++ b/xos/api/examples/cord/get_subscriber_device_feature.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/get_subscriber_device_identity.sh b/xos/api/examples/cord/get_subscriber_device_identity.sh
index e5cff59..4596c50 100755
--- a/xos/api/examples/cord/get_subscriber_device_identity.sh
+++ b/xos/api/examples/cord/get_subscriber_device_identity.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/get_subscriber_features.sh b/xos/api/examples/cord/get_subscriber_features.sh
index e50f2a7..0374398 100755
--- a/xos/api/examples/cord/get_subscriber_features.sh
+++ b/xos/api/examples/cord/get_subscriber_features.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/set_subscriber_device_feature.sh b/xos/api/examples/cord/set_subscriber_device_feature.sh
index 73d84b0..6f7b117 100755
--- a/xos/api/examples/cord/set_subscriber_device_feature.sh
+++ b/xos/api/examples/cord/set_subscriber_device_feature.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/set_subscriber_device_identity.sh b/xos/api/examples/cord/set_subscriber_device_identity.sh
index faaeba1..8950d89 100755
--- a/xos/api/examples/cord/set_subscriber_device_identity.sh
+++ b/xos/api/examples/cord/set_subscriber_device_identity.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/update_subscriber.sh b/xos/api/examples/cord/update_subscriber.sh
index 9bbe501..b2e0506 100755
--- a/xos/api/examples/cord/update_subscriber.sh
+++ b/xos/api/examples/cord/update_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/cord/util.sh b/xos/api/examples/cord/util.sh
index 7b66903..eecd614 100644
--- a/xos/api/examples/cord/util.sh
+++ b/xos/api/examples/cord/util.sh
@@ -1 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 source ../util.sh
diff --git a/xos/api/examples/exampleservice/add_exampletenant.sh b/xos/api/examples/exampleservice/add_exampletenant.sh
index d9ab3e3..380dd19 100755
--- a/xos/api/examples/exampleservice/add_exampletenant.sh
+++ b/xos/api/examples/exampleservice/add_exampletenant.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/exampleservice/config.sh b/xos/api/examples/exampleservice/config.sh
index 92d703c..12d857c 100644
--- a/xos/api/examples/exampleservice/config.sh
+++ b/xos/api/examples/exampleservice/config.sh
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # see config.sh in the parent directory
 source ../config.sh
diff --git a/xos/api/examples/exampleservice/delete_exampletenant.sh b/xos/api/examples/exampleservice/delete_exampletenant.sh
index 6eaf8b7..ccba996 100755
--- a/xos/api/examples/exampleservice/delete_exampletenant.sh
+++ b/xos/api/examples/exampleservice/delete_exampletenant.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/exampleservice/get_exampletenant_message.sh b/xos/api/examples/exampleservice/get_exampletenant_message.sh
index 96ce65c..7407df2 100755
--- a/xos/api/examples/exampleservice/get_exampletenant_message.sh
+++ b/xos/api/examples/exampleservice/get_exampletenant_message.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 # this example illustrates using a custom REST API endpoint
diff --git a/xos/api/examples/exampleservice/list_exampleservices.sh b/xos/api/examples/exampleservice/list_exampleservices.sh
index e369dff..6edaddd 100755
--- a/xos/api/examples/exampleservice/list_exampleservices.sh
+++ b/xos/api/examples/exampleservice/list_exampleservices.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/exampleservice/list_exampletenants.sh b/xos/api/examples/exampleservice/list_exampletenants.sh
index 9e15968..061dfdc 100755
--- a/xos/api/examples/exampleservice/list_exampletenants.sh
+++ b/xos/api/examples/exampleservice/list_exampletenants.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/exampleservice/put_exampletenant_message.sh b/xos/api/examples/exampleservice/put_exampletenant_message.sh
index bf0810d..d5398bb 100755
--- a/xos/api/examples/exampleservice/put_exampletenant_message.sh
+++ b/xos/api/examples/exampleservice/put_exampletenant_message.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 # this example illustrates using a custom REST API endpoint  
diff --git a/xos/api/examples/exampleservice/update_exampletenant.sh b/xos/api/examples/exampleservice/update_exampletenant.sh
index 7d5e9ce..537476b 100755
--- a/xos/api/examples/exampleservice/update_exampletenant.sh
+++ b/xos/api/examples/exampleservice/update_exampletenant.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/misc/add_slice.sh b/xos/api/examples/misc/add_slice.sh
index b2d7adc..1d2ab1b 100755
--- a/xos/api/examples/misc/add_slice.sh
+++ b/xos/api/examples/misc/add_slice.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/misc/config.sh b/xos/api/examples/misc/config.sh
index 92d703c..12d857c 100644
--- a/xos/api/examples/misc/config.sh
+++ b/xos/api/examples/misc/config.sh
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # see config.sh in the parent directory
 source ../config.sh
diff --git a/xos/api/examples/misc/delete_slice.sh b/xos/api/examples/misc/delete_slice.sh
index 1113d4f..da3491c 100755
--- a/xos/api/examples/misc/delete_slice.sh
+++ b/xos/api/examples/misc/delete_slice.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/misc/get_sshkeys.sh b/xos/api/examples/misc/get_sshkeys.sh
index 0ac14c0..cb5e5b1 100755
--- a/xos/api/examples/misc/get_sshkeys.sh
+++ b/xos/api/examples/misc/get_sshkeys.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/misc/update_slice.sh b/xos/api/examples/misc/update_slice.sh
index 94e82cd..3c6ffad 100755
--- a/xos/api/examples/misc/update_slice.sh
+++ b/xos/api/examples/misc/update_slice.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/misc/util.sh b/xos/api/examples/misc/util.sh
index 7b66903..eecd614 100644
--- a/xos/api/examples/misc/util.sh
+++ b/xos/api/examples/misc/util.sh
@@ -1 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 source ../util.sh
diff --git a/xos/api/examples/util.sh b/xos/api/examples/util.sh
index 73cc039..f3ddd15 100644
--- a/xos/api/examples/util.sh
+++ b/xos/api/examples/util.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 source ./config.sh
 
 function lookup_account_num {
diff --git a/xos/api/examples/vtr/add_truckroll_for_subscriber.sh b/xos/api/examples/vtr/add_truckroll_for_subscriber.sh
index 3a3ec41..538f324 100755
--- a/xos/api/examples/vtr/add_truckroll_for_subscriber.sh
+++ b/xos/api/examples/vtr/add_truckroll_for_subscriber.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/vtr/config.sh b/xos/api/examples/vtr/config.sh
index 92d703c..12d857c 100644
--- a/xos/api/examples/vtr/config.sh
+++ b/xos/api/examples/vtr/config.sh
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # see config.sh in the parent directory
 source ../config.sh
diff --git a/xos/api/examples/vtr/delete_truckroll.sh b/xos/api/examples/vtr/delete_truckroll.sh
index ee31aeb..22c41af 100755
--- a/xos/api/examples/vtr/delete_truckroll.sh
+++ b/xos/api/examples/vtr/delete_truckroll.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/vtr/list_truckrolls.sh b/xos/api/examples/vtr/list_truckrolls.sh
index f1d7e87..9ba9cf2 100755
--- a/xos/api/examples/vtr/list_truckrolls.sh
+++ b/xos/api/examples/vtr/list_truckrolls.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/api/examples/vtr/util.sh b/xos/api/examples/vtr/util.sh
index 7b66903..eecd614 100644
--- a/xos/api/examples/vtr/util.sh
+++ b/xos/api/examples/vtr/util.sh
@@ -1 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 source ../util.sh
diff --git a/xos/api/import_methods.py b/xos/api/import_methods.py
index ec07be6..3e6ea62 100644
--- a/xos/api/import_methods.py
+++ b/xos/api/import_methods.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.views.generic import View
 from django.conf.urls import patterns, url, include
 from rest_framework.routers import DefaultRouter
diff --git a/xos/api/service/__init__.py b/xos/api/service/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/api/service/__init__.py
+++ b/xos/api/service/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/api/tenant/__init__.py b/xos/api/tenant/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/api/tenant/__init__.py
+++ b/xos/api/tenant/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/api/utility/__init__.py b/xos/api/utility/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/api/utility/__init__.py
+++ b/xos/api/utility/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/api/utility/dashboards.py b/xos/api/utility/dashboards.py
index 7dca828..bb2b7fd 100644
--- a/xos/api/utility/dashboards.py
+++ b/xos/api/utility/dashboards.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/api/utility/deleted_objects.py b/xos/api/utility/deleted_objects.py
index c728827..4a139ad 100644
--- a/xos/api/utility/deleted_objects.py
+++ b/xos/api/utility/deleted_objects.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from django.http import HttpResponse
 from rest_framework.decorators import api_view
diff --git a/xos/api/utility/loginview.py b/xos/api/utility/loginview.py
index 49a6d16..ce64ec5 100644
--- a/xos/api/utility/loginview.py
+++ b/xos/api/utility/loginview.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/api/utility/modeldefs.py b/xos/api/utility/modeldefs.py
index 9f38b48..a32569d 100644
--- a/xos/api/utility/modeldefs.py
+++ b/xos/api/utility/modeldefs.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/api/utility/onboarding.py b/xos/api/utility/onboarding.py
index c04be52..fda5d28 100644
--- a/xos/api/utility/onboarding.py
+++ b/xos/api/utility/onboarding.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from django.http import HttpResponse
 from rest_framework.decorators import api_view
diff --git a/xos/api/utility/portforwarding.py b/xos/api/utility/portforwarding.py
index 53f56d4..0e8af16 100644
--- a/xos/api/utility/portforwarding.py
+++ b/xos/api/utility/portforwarding.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/api/utility/sliceplus.py b/xos/api/utility/sliceplus.py
index 6d6339c..3b1d47f 100644
--- a/xos/api/utility/sliceplus.py
+++ b/xos/api/utility/sliceplus.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/api/utility/sshkeys.py b/xos/api/utility/sshkeys.py
index 6ddd1ef..4a50310 100644
--- a/xos/api/utility/sshkeys.py
+++ b/xos/api/utility/sshkeys.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/api/utility/synchronizer.py b/xos/api/utility/synchronizer.py
index 84bae00..444fd68 100644
--- a/xos/api/utility/synchronizer.py
+++ b/xos/api/utility/synchronizer.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/api/utility/toscaapi.py b/xos/api/utility/toscaapi.py
index 1375969..3c18595 100644
--- a/xos/api/utility/toscaapi.py
+++ b/xos/api/utility/toscaapi.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 import os
 import sys
diff --git a/xos/api/utility/userdetail.py b/xos/api/utility/userdetail.py
index 3d05d93..1d05178 100644
--- a/xos/api/utility/userdetail.py
+++ b/xos/api/utility/userdetail.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json

 import os

 import sys

diff --git a/xos/api/xosapi_helpers.py b/xos/api/xosapi_helpers.py
index ae27d82..626a495 100644
--- a/xos/api/xosapi_helpers.py
+++ b/xos/api/xosapi_helpers.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework import generics
 from rest_framework import serializers
 from rest_framework.response import Response
diff --git a/xos/core/__init__.py b/xos/core/__init__.py
index e01f9cd..dad322a 100644
--- a/xos/core/__init__.py
+++ b/xos/core/__init__.py
@@ -1 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # from tests import *
diff --git a/xos/core/acl.py b/xos/core/acl.py
index 518d199..0ee0d2b 100644
--- a/xos/core/acl.py
+++ b/xos/core/acl.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from fnmatch import fnmatch
 
 """
diff --git a/xos/core/admin.py b/xos/core/admin.py
index 72d56dc..167d159 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import threading
 from cgi import escape as html_escape
 
diff --git a/xos/core/context_processors.py b/xos/core/context_processors.py
index bb5030b..5de751f 100644
--- a/xos/core/context_processors.py
+++ b/xos/core/context_processors.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.conf import settings
 from core.models import Site
 
diff --git a/xos/core/core-onboard.yaml b/xos/core/core-onboard.yaml
index 59aefac..21385a0 100644
--- a/xos/core/core-onboard.yaml
+++ b/xos/core/core-onboard.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Onboard XOS Core
diff --git a/xos/core/dashboard/__init__.py b/xos/core/dashboard/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/core/dashboard/__init__.py
+++ b/xos/core/dashboard/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/core/dashboard/sites.py b/xos/core/dashboard/sites.py
index 508746d..f9d9478 100644
--- a/xos/core/dashboard/sites.py
+++ b/xos/core/dashboard/sites.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #sites.py
 
 from django.contrib.admin.sites import AdminSite
diff --git a/xos/core/dashboard/views/__init__.py b/xos/core/dashboard/views/__init__.py
index 98665f9..93f6f79 100644
--- a/xos/core/dashboard/views/__init__.py
+++ b/xos/core/dashboard/views/__init__.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #from home import DashboardWelcomeView, DashboardDynamicView
 #from tenant import TenantCreateSlice, TenantUpdateSlice, TenantDeleteSliceView, TenantAddOrRemoveInstanceView, TenantPickSitesView, TenantViewData
 #from simulator import SimulatorView
diff --git a/xos/core/dashboard/views/download_ssh_commands.py b/xos/core/dashboard/views/download_ssh_commands.py
index 92bcac4..c166198 100644
--- a/xos/core/dashboard/views/download_ssh_commands.py
+++ b/xos/core/dashboard/views/download_ssh_commands.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from view_common import *
 from core.xoslib.objects.sliceplus import SlicePlus
 
diff --git a/xos/core/dashboard/views/home.py b/xos/core/dashboard/views/home.py
index 041ca4a..6b10ca1 100644
--- a/xos/core/dashboard/views/home.py
+++ b/xos/core/dashboard/views/home.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from view_common import *
 from django.http import HttpResponseRedirect
 import sys
diff --git a/xos/core/dashboard/views/interactions.py b/xos/core/dashboard/views/interactions.py
index f74d01e..22c30e6 100644
--- a/xos/core/dashboard/views/interactions.py
+++ b/xos/core/dashboard/views/interactions.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from view_common import *
 
 class DashboardSliceInteractions(View):
diff --git a/xos/core/dashboard/views/shell.py b/xos/core/dashboard/views/shell.py
index c49133b..b13c1c3 100644
--- a/xos/core/dashboard/views/shell.py
+++ b/xos/core/dashboard/views/shell.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import datetime
 import os
 import sys
diff --git a/xos/core/dashboard/views/simulator.py b/xos/core/dashboard/views/simulator.py
index 43332ab..9234b73 100644
--- a/xos/core/dashboard/views/simulator.py
+++ b/xos/core/dashboard/views/simulator.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from view_common import *
 
 class SimulatorView(View):
diff --git a/xos/core/dashboard/views/tenant.py b/xos/core/dashboard/views/tenant.py
index 6fbc4d6..b1d972b 100644
--- a/xos/core/dashboard/views/tenant.py
+++ b/xos/core/dashboard/views/tenant.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from view_common import *
 from core.models import *
 import functools
diff --git a/xos/core/dashboard/views/test.py b/xos/core/dashboard/views/test.py
index 4eae215..8aa6931 100644
--- a/xos/core/dashboard/views/test.py
+++ b/xos/core/dashboard/views/test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from view_common import *
 
 class DashboardUserSiteView(View):
diff --git a/xos/core/dashboard/views/view_common.py b/xos/core/dashboard/views/view_common.py
index e1cb18b..3a82062 100644
--- a/xos/core/dashboard/views/view_common.py
+++ b/xos/core/dashboard/views/view_common.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 from django.views.generic import TemplateView, View
diff --git a/xos/core/fixtures/__init__.py b/xos/core/fixtures/__init__.py
index e69de29..d4e8062 100644
--- a/xos/core/fixtures/__init__.py
+++ b/xos/core/fixtures/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/core/middleware.py b/xos/core/middleware.py
index 4cfd991..f8c6613 100644
--- a/xos/core/middleware.py
+++ b/xos/core/middleware.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from threading import local
 
 _active = local()
diff --git a/xos/core/models/attic/addresspool_model.py b/xos/core/models/attic/addresspool_model.py
index e612b11..d128f98 100644
--- a/xos/core/models/attic/addresspool_model.py
+++ b/xos/core/models/attic/addresspool_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def get_address(self):
     with transaction.atomic():
         ap = AddressPool.objects.get(pk=self.pk)
diff --git a/xos/core/models/attic/controller_model.py b/xos/core/models/attic/controller_model.py
index 8b13789..b0fb0b2 100644
--- a/xos/core/models/attic/controller_model.py
+++ b/xos/core/models/attic/controller_model.py
@@ -1 +1,13 @@
-
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
diff --git a/xos/core/models/attic/controllernetwork_model.py b/xos/core/models/attic/controllernetwork_model.py
index 5879050..1bd6a61 100644
--- a/xos/core/models/attic/controllernetwork_model.py
+++ b/xos/core/models/attic/controllernetwork_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def tologdict(self):
     d=super(ControllerNetwork,self).tologdict()
     try:
diff --git a/xos/core/models/attic/controllerslice_model.py b/xos/core/models/attic/controllerslice_model.py
index 9e4a3d0..026fc88 100644
--- a/xos/core/models/attic/controllerslice_model.py
+++ b/xos/core/models/attic/controllerslice_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def tologdict(self):
     d=super(ControllerSlice,self).tologdict()
     try:
diff --git a/xos/core/models/attic/deployment_model.py b/xos/core/models/attic/deployment_model.py
index 0448f02..4bf0f3b 100644
--- a/xos/core/models/attic/deployment_model.py
+++ b/xos/core/models/attic/deployment_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def get_acl(self):
     return AccessControlList(self.accessControl)
 
diff --git a/xos/core/models/attic/header.py b/xos/core/models/attic/header.py
index b6b8d31..c65ca03 100644
--- a/xos/core/models/attic/header.py
+++ b/xos/core/models/attic/header.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from __future__ import absolute_import
 
 import sys
diff --git a/xos/core/models/attic/instance_model.py b/xos/core/models/attic/instance_model.py
index 2ce52f7..e29c26c 100644
--- a/xos/core/models/attic/instance_model.py
+++ b/xos/core/models/attic/instance_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def get_controller (self):
     return self.node.site_deployment.controller
 
diff --git a/xos/core/models/attic/service_header.py b/xos/core/models/attic/service_header.py
index 7cfef6f..22ba19d 100644
--- a/xos/core/models/attic/service_header.py
+++ b/xos/core/models/attic/service_header.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from __future__ import absolute_import
 
 from core.models.xos import XOS
diff --git a/xos/core/models/attic/service_model.py b/xos/core/models/attic/service_model.py
index 5b305cd..f7e8ca0 100644
--- a/xos/core/models/attic/service_model.py
+++ b/xos/core/models/attic/service_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 KIND="generic"
 
 def __init__(self, *args, **kwargs):
diff --git a/xos/core/models/attic/serviceinstance_model.py b/xos/core/models/attic/serviceinstance_model.py
index d1de2f6..f0006c1 100644
--- a/xos/core/models/attic/serviceinstance_model.py
+++ b/xos/core/models/attic/serviceinstance_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def __init__(self, *args, **kwargs):
     super(ServiceInstance, self).__init__(*args, **kwargs)
 
diff --git a/xos/core/models/attic/serviceinstance_top.py b/xos/core/models/attic/serviceinstance_top.py
index 474a085..4cf8491 100644
--- a/xos/core/models/attic/serviceinstance_top.py
+++ b/xos/core/models/attic/serviceinstance_top.py
@@ -1 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from service_header import *
diff --git a/xos/core/models/attic/serviceinstancelink.model b/xos/core/models/attic/serviceinstancelink.model
index 4e670c8..88ca4b4 100644
--- a/xos/core/models/attic/serviceinstancelink.model
+++ b/xos/core/models/attic/serviceinstancelink.model
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def save(self, *args, **kwargs):
     subCount = sum([1 for e in [self.subscriber_service, self.subscriber_service_instance, self.subscriber_network] if e is not None])
     if (subCount > 1):
diff --git a/xos/core/models/attic/slice_model.py b/xos/core/models/attic/slice_model.py
index eaa5b9d..ca4e005 100644
--- a/xos/core/models/attic/slice_model.py
+++ b/xos/core/models/attic/slice_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 NETWORK_CHOICES = ((None, 'Default'), ('host', 'Host'), ('bridged', 'Bridged'), ('noauto', 'No Automatic Networks'))
 
 @property
diff --git a/xos/core/models/attic/tenant_model.py b/xos/core/models/attic/tenant_model.py
index be011fb..a01233d 100644
--- a/xos/core/models/attic/tenant_model.py
+++ b/xos/core/models/attic/tenant_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 KIND="generic"
 
 def __init__(self, *args, **kwargs):
diff --git a/xos/core/models/attic/tenantroot_model.py b/xos/core/models/attic/tenantroot_model.py
index a31a3cc..388fac8 100644
--- a/xos/core/models/attic/tenantroot_model.py
+++ b/xos/core/models/attic/tenantroot_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 KIND="generic"
 
 def __init__(self, *args, **kwargs):
diff --git a/xos/core/models/attic/tenantwithcontainer_model.py b/xos/core/models/attic/tenantwithcontainer_model.py
index f2c5405..cebc461 100644
--- a/xos/core/models/attic/tenantwithcontainer_model.py
+++ b/xos/core/models/attic/tenantwithcontainer_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 def __init__(self, *args, **kwargs):
     super(TenantWithContainer, self).__init__(*args, **kwargs)
 
diff --git a/xos/core/models/attic/xosbase_header.py b/xos/core/models/attic/xosbase_header.py
index 93df83d..9cb7348 100644
--- a/xos/core/models/attic/xosbase_header.py
+++ b/xos/core/models/attic/xosbase_header.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import datetime
 import json
 import pytz
diff --git a/xos/core/models/attic/xosbase_model.py b/xos/core/models/attic/xosbase_model.py
index dc7e5ed..6ee617f 100644
--- a/xos/core/models/attic/xosbase_model.py
+++ b/xos/core/models/attic/xosbase_model.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 objects = XOSBaseManager()
 deleted_objects = XOSBaseDeletionManager()
 
diff --git a/xos/core/models/contenttype.py b/xos/core/models/contenttype.py
index 62e77ea..4cb4d8b 100644
--- a/xos/core/models/contenttype.py
+++ b/xos/core/models/contenttype.py
@@ -1 +1,17 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.contrib.contenttypes.models import ContentType
diff --git a/xos/core/models/user.py b/xos/core/models/user.py
index dd7ae84..423fead 100644
--- a/xos/core/models/user.py
+++ b/xos/core/models/user.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import datetime
 import hashlib
 import os
diff --git a/xos/core/serializers.py b/xos/core/serializers.py
index d84f111..ff7e7b2 100644
--- a/xos/core/serializers.py
+++ b/xos/core/serializers.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.forms import widgets
 from rest_framework import serializers
 from core.models import *
diff --git a/xos/core/static/cord.css b/xos/core/static/cord.css
index 45f75eb..f3dfd20 100644
--- a/xos/core/static/cord.css
+++ b/xos/core/static/cord.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* login page background image */
 .login {
     background-image: url('cord_bg.jpg');
diff --git a/xos/core/static/hpc_historical.css b/xos/core/static/hpc_historical.css
index 7be52db..4306324 100644
--- a/xos/core/static/hpc_historical.css
+++ b/xos/core/static/hpc_historical.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 .row {
   margin-right: -15px;
   margin-left: -15px;
diff --git a/xos/core/static/js/Leaflet.MakiMarkers.js b/xos/core/static/js/Leaflet.MakiMarkers.js
index 910bb31..ff92aa2 100644
--- a/xos/core/static/js/Leaflet.MakiMarkers.js
+++ b/xos/core/static/js/Leaflet.MakiMarkers.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*
  * Leaflet plugin to create map icons using Maki Icons from MapBox.
  *
diff --git a/xos/core/static/log4javascript-1.4.6/console.html b/xos/core/static/log4javascript-1.4.6/console.html
index 476d272..1561416 100644
--- a/xos/core/static/log4javascript-1.4.6/console.html
+++ b/xos/core/static/log4javascript-1.4.6/console.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

 <head>

diff --git a/xos/core/static/log4javascript-1.4.6/console_uncompressed.html b/xos/core/static/log4javascript-1.4.6/console_uncompressed.html
index 55679f8..220cca0 100644
--- a/xos/core/static/log4javascript-1.4.6/console_uncompressed.html
+++ b/xos/core/static/log4javascript-1.4.6/console_uncompressed.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

 	<head>

diff --git a/xos/core/static/log4javascript-1.4.6/demos/basic.html b/xos/core/static/log4javascript-1.4.6/demos/basic.html
index 51d5857..d09d510 100644
--- a/xos/core/static/log4javascript-1.4.6/demos/basic.html
+++ b/xos/core/static/log4javascript-1.4.6/demos/basic.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/demos/blank.html b/xos/core/static/log4javascript-1.4.6/demos/blank.html
index 7e8ac56..104584b 100644
--- a/xos/core/static/log4javascript-1.4.6/demos/blank.html
+++ b/xos/core/static/log4javascript-1.4.6/demos/blank.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <html>

 <head><title>Blank page</title></head>

 <body></body>

diff --git a/xos/core/static/log4javascript-1.4.6/demos/index.html b/xos/core/static/log4javascript-1.4.6/demos/index.html
index 00e84ac..8024a19 100644
--- a/xos/core/static/log4javascript-1.4.6/demos/index.html
+++ b/xos/core/static/log4javascript-1.4.6/demos/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/demos/inpage.html b/xos/core/static/log4javascript-1.4.6/demos/inpage.html
index 8e47d72..646a43e 100644
--- a/xos/core/static/log4javascript-1.4.6/demos/inpage.html
+++ b/xos/core/static/log4javascript-1.4.6/demos/inpage.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/demos/lite.html b/xos/core/static/log4javascript-1.4.6/demos/lite.html
index a1d2dd3..00b2bbd 100644
--- a/xos/core/static/log4javascript-1.4.6/demos/lite.html
+++ b/xos/core/static/log4javascript-1.4.6/demos/lite.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/docs/backwardsincompatibilities.html b/xos/core/static/log4javascript-1.4.6/docs/backwardsincompatibilities.html
index f212fd4..371a3c9 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/backwardsincompatibilities.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/backwardsincompatibilities.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/docs/distribution.html b/xos/core/static/log4javascript-1.4.6/docs/distribution.html
index 8f6cdfd..9ffc3ea 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/distribution.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/distribution.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >

diff --git a/xos/core/static/log4javascript-1.4.6/docs/index.html b/xos/core/static/log4javascript-1.4.6/docs/index.html
index d3b3ac2..9e1f3e1 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/index.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/docs/lite.html b/xos/core/static/log4javascript-1.4.6/docs/lite.html
index 11b4684..26d99b3 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/lite.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/lite.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >

diff --git a/xos/core/static/log4javascript-1.4.6/docs/manual.html b/xos/core/static/log4javascript-1.4.6/docs/manual.html
index defac9c..4432aa5 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/manual.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/manual.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/docs/manual_lite.html b/xos/core/static/log4javascript-1.4.6/docs/manual_lite.html
index 74e5a7d..a436c68 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/manual_lite.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/manual_lite.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/docs/quickstart.html b/xos/core/static/log4javascript-1.4.6/docs/quickstart.html
index 3bffff5..3fe33ee 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/quickstart.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/quickstart.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/docs/whatsnew.html b/xos/core/static/log4javascript-1.4.6/docs/whatsnew.html
index 6e4e06f..aa0cb51 100644
--- a/xos/core/static/log4javascript-1.4.6/docs/whatsnew.html
+++ b/xos/core/static/log4javascript-1.4.6/docs/whatsnew.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/examples/demo.html b/xos/core/static/log4javascript-1.4.6/examples/demo.html
index 118b879..41f0760 100644
--- a/xos/core/static/log4javascript-1.4.6/examples/demo.html
+++ b/xos/core/static/log4javascript-1.4.6/examples/demo.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/examples/example_manual.html b/xos/core/static/log4javascript-1.4.6/examples/example_manual.html
index 68189e3..1d4a8bd 100644
--- a/xos/core/static/log4javascript-1.4.6/examples/example_manual.html
+++ b/xos/core/static/log4javascript-1.4.6/examples/example_manual.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/examples/example_quickstart_1.html b/xos/core/static/log4javascript-1.4.6/examples/example_quickstart_1.html
index 3ae4a9f..142b71a 100644
--- a/xos/core/static/log4javascript-1.4.6/examples/example_quickstart_1.html
+++ b/xos/core/static/log4javascript-1.4.6/examples/example_quickstart_1.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/js/console.html b/xos/core/static/log4javascript-1.4.6/js/console.html
index 476d272..1561416 100644
--- a/xos/core/static/log4javascript-1.4.6/js/console.html
+++ b/xos/core/static/log4javascript-1.4.6/js/console.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

 <head>

diff --git a/xos/core/static/log4javascript-1.4.6/js/console_uncompressed.html b/xos/core/static/log4javascript-1.4.6/js/console_uncompressed.html
index 55679f8..220cca0 100644
--- a/xos/core/static/log4javascript-1.4.6/js/console_uncompressed.html
+++ b/xos/core/static/log4javascript-1.4.6/js/console_uncompressed.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

 	<head>

diff --git a/xos/core/static/log4javascript-1.4.6/js/liteconsole.html b/xos/core/static/log4javascript-1.4.6/js/liteconsole.html
index 840a59b..f948bae 100644
--- a/xos/core/static/log4javascript-1.4.6/js/liteconsole.html
+++ b/xos/core/static/log4javascript-1.4.6/js/liteconsole.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

 <head>

diff --git a/xos/core/static/log4javascript-1.4.6/js/liteconsole_uncompressed.html b/xos/core/static/log4javascript-1.4.6/js/liteconsole_uncompressed.html
index df5275f..b0340e5 100644
--- a/xos/core/static/log4javascript-1.4.6/js/liteconsole_uncompressed.html
+++ b/xos/core/static/log4javascript-1.4.6/js/liteconsole_uncompressed.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

 	<head>

diff --git a/xos/core/static/log4javascript-1.4.6/js/log4javascript.js b/xos/core/static/log4javascript-1.4.6/js/log4javascript.js
index 042daa9..b555b9f 100644
--- a/xos/core/static/log4javascript-1.4.6/js/log4javascript.js
+++ b/xos/core/static/log4javascript-1.4.6/js/log4javascript.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite.js b/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite.js
index b04ce8e..0d6046e 100644
--- a/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite.js
+++ b/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite_uncompressed.js
index 12e97d8..15be858 100644
--- a/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/log4javascript_lite_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/log4javascript_production.js b/xos/core/static/log4javascript-1.4.6/js/log4javascript_production.js
index 1a31299..701c6ac 100644
--- a/xos/core/static/log4javascript-1.4.6/js/log4javascript_production.js
+++ b/xos/core/static/log4javascript-1.4.6/js/log4javascript_production.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/log4javascript_production_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/log4javascript_production_uncompressed.js
index 1a29621..2b7c993 100644
--- a/xos/core/static/log4javascript-1.4.6/js/log4javascript_production_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/log4javascript_production_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/log4javascript_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/log4javascript_uncompressed.js
index a644e3b..146c266 100644
--- a/xos/core/static/log4javascript-1.4.6/js/log4javascript_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/log4javascript_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript.js b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript.js
index eae582b..2b89a6a 100644
--- a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript.js
+++ b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite.js b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite.js
index 7d2ea14..2418285 100644
--- a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite.js
+++ b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite_uncompressed.js
index afb9ba7..1fe7a92 100644
--- a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_lite_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production.js b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production.js
index 69a90a8..500f627 100644
--- a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production.js
+++ b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production_uncompressed.js
index 79eb7ca..79fab5f 100644
--- a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_production_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_uncompressed.js
index 1976fbc..77a9a9c 100644
--- a/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/stubs/log4javascript_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript.js b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript.js
index 89fd903..c7b255d 100644
--- a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript.js
+++ b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite.js b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite.js
index b9eb6b7..769d78a 100644
--- a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite.js
+++ b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite_uncompressed.js
index b9eb6b7..769d78a 100644
--- a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_lite_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production.js b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production.js
index f5d1090..11aac18 100644
--- a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production.js
+++ b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production_uncompressed.js
index e64990f..9f54f1d 100644
--- a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_production_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_uncompressed.js b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_uncompressed.js
index 55bd2ca..d82e7d6 100644
--- a/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/js/tests/log4javascript_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/log4javascript.js b/xos/core/static/log4javascript-1.4.6/log4javascript.js
index 042daa9..b555b9f 100644
--- a/xos/core/static/log4javascript-1.4.6/log4javascript.js
+++ b/xos/core/static/log4javascript-1.4.6/log4javascript.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/log4javascript_uncompressed.js b/xos/core/static/log4javascript-1.4.6/log4javascript_uncompressed.js
index a644e3b..146c266 100644
--- a/xos/core/static/log4javascript-1.4.6/log4javascript_uncompressed.js
+++ b/xos/core/static/log4javascript-1.4.6/log4javascript_uncompressed.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /**

  * Copyright 2013 Tim Down.

  *

diff --git a/xos/core/static/log4javascript-1.4.6/main.css b/xos/core/static/log4javascript-1.4.6/main.css
index 5ac3df3..c309c6a 100644
--- a/xos/core/static/log4javascript-1.4.6/main.css
+++ b/xos/core/static/log4javascript-1.4.6/main.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 body {

 	font-family: Verdana, Arial, Helvetica, Sans-serif;

 	font-size: 75%;

diff --git a/xos/core/static/log4javascript-1.4.6/test/index.html b/xos/core/static/log4javascript-1.4.6/test/index.html
index e01f13c..9a28c60 100644
--- a/xos/core/static/log4javascript-1.4.6/test/index.html
+++ b/xos/core/static/log4javascript-1.4.6/test/index.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/log4javascript.html b/xos/core/static/log4javascript-1.4.6/test/log4javascript.html
index 8e426b9..1439a75 100644
--- a/xos/core/static/log4javascript-1.4.6/test/log4javascript.html
+++ b/xos/core/static/log4javascript-1.4.6/test/log4javascript.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite.html b/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite.html
index 508dc83..66c174f 100644
--- a/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite.html
+++ b/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite_uncompressed.html b/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite_uncompressed.html
index 968019c..339602d 100644
--- a/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite_uncompressed.html
+++ b/xos/core/static/log4javascript-1.4.6/test/log4javascript_lite_uncompressed.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/log4javascript_production.html b/xos/core/static/log4javascript-1.4.6/test/log4javascript_production.html
index e5308b1..ce80a82 100644
--- a/xos/core/static/log4javascript-1.4.6/test/log4javascript_production.html
+++ b/xos/core/static/log4javascript-1.4.6/test/log4javascript_production.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/log4javascript_production_uncompressed.html b/xos/core/static/log4javascript-1.4.6/test/log4javascript_production_uncompressed.html
index 21f84d7..c53c795 100644
--- a/xos/core/static/log4javascript-1.4.6/test/log4javascript_production_uncompressed.html
+++ b/xos/core/static/log4javascript-1.4.6/test/log4javascript_production_uncompressed.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/log4javascript_uncompressed.html b/xos/core/static/log4javascript-1.4.6/test/log4javascript_uncompressed.html
index 3db9241..2e13ecf 100644
--- a/xos/core/static/log4javascript-1.4.6/test/log4javascript_uncompressed.html
+++ b/xos/core/static/log4javascript-1.4.6/test/log4javascript_uncompressed.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/main.html b/xos/core/static/log4javascript-1.4.6/test/main.html
index 176098f..a2e080f 100644
--- a/xos/core/static/log4javascript-1.4.6/test/main.html
+++ b/xos/core/static/log4javascript-1.4.6/test/main.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <?xml version="1.0"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

diff --git a/xos/core/static/log4javascript-1.4.6/test/tests.css b/xos/core/static/log4javascript-1.4.6/test/tests.css
index 9cddef8..ef5853a 100644
--- a/xos/core/static/log4javascript-1.4.6/test/tests.css
+++ b/xos/core/static/log4javascript-1.4.6/test/tests.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 body {

 	font-family: verdana, arial, helvetica, sans-serif;

 	font-size: 81.25%;

diff --git a/xos/core/static/log4javascript-1.4.6/test/xntest.js b/xos/core/static/log4javascript-1.4.6/test/xntest.js
index 1b8f475..c18ee9f 100644
--- a/xos/core/static/log4javascript-1.4.6/test/xntest.js
+++ b/xos/core/static/log4javascript-1.4.6/test/xntest.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Next three methods are primarily for IE5, which is missing them
 if (!Array.prototype.push) {
 	Array.prototype.push = function() {
diff --git a/xos/core/static/main.js b/xos/core/static/main.js
index 486d65a..9262f06 100644
--- a/xos/core/static/main.js
+++ b/xos/core/static/main.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 $(document).ready(function() {
 
 	
diff --git a/xos/core/static/page_analytics.js b/xos/core/static/page_analytics.js
index 42058b1..ffc6fda 100644
--- a/xos/core/static/page_analytics.js
+++ b/xos/core/static/page_analytics.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // ----------------------------------------------------------------------------
 // node count and average cpu utilization
 
diff --git a/xos/core/static/planetstack_graphs_old.js b/xos/core/static/planetstack_graphs_old.js
index 806afe6..52bca6f 100644
--- a/xos/core/static/planetstack_graphs_old.js
+++ b/xos/core/static/planetstack_graphs_old.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 $(document).ready(function() {
 
 function renderChart(jsonData, yField, xField, legend) {
diff --git a/xos/core/static/shell/opencloud_shell.css b/xos/core/static/shell/opencloud_shell.css
index 4a24cf0..6115560 100644
--- a/xos/core/static/shell/opencloud_shell.css
+++ b/xos/core/static/shell/opencloud_shell.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #terminal {
   width: 960px;
   margin:50px auto 50px auto;
diff --git a/xos/core/static/uploadTextarea.js b/xos/core/static/uploadTextarea.js
index a7f76bf..54e51f4 100644
--- a/xos/core/static/uploadTextarea.js
+++ b/xos/core/static/uploadTextarea.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 function uploadTextarea(event,textarea_id) {
     var input = event.target;
 
diff --git a/xos/core/static/xos.css b/xos/core/static/xos.css
index 59a992f..77804ab 100644
--- a/xos/core/static/xos.css
+++ b/xos/core/static/xos.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @charset "UTF-8";
 /*!
  * Bootstrap v3.3.6 (http://getbootstrap.com)
diff --git a/xos/core/static/xosNgLib.css b/xos/core/static/xosNgLib.css
index 2b251e3..bf12ee3 100644
--- a/xos/core/static/xosNgLib.css
+++ b/xos/core/static/xosNgLib.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 @keyframes slideInRight {
   from {
     transform: translate3d(100%, 0, 0);
diff --git a/xos/core/static/xos_graphs.js b/xos/core/static/xos_graphs.js
index d8690ed..cb6e300 100644
--- a/xos/core/static/xos_graphs.js
+++ b/xos/core/static/xos_graphs.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 google.load('visualization', '1', {'packages' : ['controls','table','corechart','geochart']});
 
 function renderChart(newStyle, dialog, container, dataSourceUrl, yColumn, xColumn, aggFunc, options) {
diff --git a/xos/core/templates/slice_instance_tab.html b/xos/core/templates/slice_instance_tab.html
index abcfea4..c06c770 100644
--- a/xos/core/templates/slice_instance_tab.html
+++ b/xos/core/templates/slice_instance_tab.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% if slice_id %}
 
 <a href="/admin/core/instance/add/?_to_field=id&slice={{ slice_id }}" id="add_instance_advanced"
diff --git a/xos/core/templatetags/__init__.py b/xos/core/templatetags/__init__.py
index e69de29..d4e8062 100644
--- a/xos/core/templatetags/__init__.py
+++ b/xos/core/templatetags/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/core/templatetags/core_tags.py b/xos/core/templatetags/core_tags.py
index a692193..517125f 100644
--- a/xos/core/templatetags/core_tags.py
+++ b/xos/core/templatetags/core_tags.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django import template
 # import sys
 from core.models import DashboardView
diff --git a/xos/core/tests.py b/xos/core/tests.py
index 06bf678..4720865 100644
--- a/xos/core/tests.py
+++ b/xos/core/tests.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # TEST
 # To execute these tests use `python manage.py test core`
 
diff --git a/xos/core/views/__init__.py b/xos/core/views/__init__.py
index e69de29..d4e8062 100644
--- a/xos/core/views/__init__.py
+++ b/xos/core/views/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/core/views/mCordServiceGrid.py b/xos/core/views/mCordServiceGrid.py
index 19dd2a1..5a36faa 100644
--- a/xos/core/views/mCordServiceGrid.py
+++ b/xos/core/views/mCordServiceGrid.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.http import HttpResponse
 from django.views.generic import TemplateView, View
 from django import template
diff --git a/xos/core/views/mcordview.py b/xos/core/views/mcordview.py
index dc5f06a..33c9145 100644
--- a/xos/core/views/mcordview.py
+++ b/xos/core/views/mcordview.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.http import HttpResponse
 from django.views.generic import TemplateView, View
 from django import template
diff --git a/xos/core/xoslib/__init__.py b/xos/core/xoslib/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/core/xoslib/__init__.py
+++ b/xos/core/xoslib/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/core/xoslib/dashboards/xosCeilometerDashboard.html b/xos/core/xoslib/dashboards/xosCeilometerDashboard.html
index 4aa54ba..3462956 100644
--- a/xos/core/xoslib/dashboards/xosCeilometerDashboard.html
+++ b/xos/core/xoslib/dashboards/xosCeilometerDashboard.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1, max-scale=1">
 <!-- browserSync -->
diff --git a/xos/core/xoslib/dashboards/xosContentProvider.html b/xos/core/xoslib/dashboards/xosContentProvider.html
index cdaeac4..98c0f23 100644
--- a/xos/core/xoslib/dashboards/xosContentProvider.html
+++ b/xos/core/xoslib/dashboards/xosContentProvider.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- endcss -->
 <!-- inject:css -->
diff --git a/xos/core/xoslib/dashboards/xosDashboardManager.html b/xos/core/xoslib/dashboards/xosDashboardManager.html
index 09e90c8..cb79918 100644
--- a/xos/core/xoslib/dashboards/xosDashboardManager.html
+++ b/xos/core/xoslib/dashboards/xosDashboardManager.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosDeveloper.html b/xos/core/xoslib/dashboards/xosDeveloper.html
index f3abf18..bd34345 100644
--- a/xos/core/xoslib/dashboards/xosDeveloper.html
+++ b/xos/core/xoslib/dashboards/xosDeveloper.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosDiagnostic.html b/xos/core/xoslib/dashboards/xosDiagnostic.html
index dcbb371..9dda760 100644
--- a/xos/core/xoslib/dashboards/xosDiagnostic.html
+++ b/xos/core/xoslib/dashboards/xosDiagnostic.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- endcss -->
 <!-- inject:css -->
diff --git a/xos/core/xoslib/dashboards/xosEcordTopology.html b/xos/core/xoslib/dashboards/xosEcordTopology.html
index 9e19b57..f8a4363 100644
--- a/xos/core/xoslib/dashboards/xosEcordTopology.html
+++ b/xos/core/xoslib/dashboards/xosEcordTopology.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosGlobalXos.html b/xos/core/xoslib/dashboards/xosGlobalXos.html
index 435724d..9257a9b 100644
--- a/xos/core/xoslib/dashboards/xosGlobalXos.html
+++ b/xos/core/xoslib/dashboards/xosGlobalXos.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosHpc.html b/xos/core/xoslib/dashboards/xosHpc.html
index 6248e74..195b64a 100644
--- a/xos/core/xoslib/dashboards/xosHpc.html
+++ b/xos/core/xoslib/dashboards/xosHpc.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosMcord-slicing.html b/xos/core/xoslib/dashboards/xosMcord-slicing.html
index fd5335b..10203fc 100644
--- a/xos/core/xoslib/dashboards/xosMcord-slicing.html
+++ b/xos/core/xoslib/dashboards/xosMcord-slicing.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosMcordTopology.html b/xos/core/xoslib/dashboards/xosMcordTopology.html
index 132e54f..9e6a1f9 100644
--- a/xos/core/xoslib/dashboards/xosMcordTopology.html
+++ b/xos/core/xoslib/dashboards/xosMcordTopology.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- inject:css -->
diff --git a/xos/core/xoslib/dashboards/xosOpenVPNDashboard.html b/xos/core/xoslib/dashboards/xosOpenVPNDashboard.html
index 6963cd2..cb34b7f 100644
--- a/xos/core/xoslib/dashboards/xosOpenVPNDashboard.html
+++ b/xos/core/xoslib/dashboards/xosOpenVPNDashboard.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 <!-- endcss -->
 <!-- inject:css -->
diff --git a/xos/core/xoslib/dashboards/xosServiceGrid.html b/xos/core/xoslib/dashboards/xosServiceGrid.html
index 40313c5..46e645d 100644
--- a/xos/core/xoslib/dashboards/xosServiceGrid.html
+++ b/xos/core/xoslib/dashboards/xosServiceGrid.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosSubscribers.html b/xos/core/xoslib/dashboards/xosSubscribers.html
index cb58882..7032ad0 100644
--- a/xos/core/xoslib/dashboards/xosSubscribers.html
+++ b/xos/core/xoslib/dashboards/xosSubscribers.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosSynchronizerNotifier.html b/xos/core/xoslib/dashboards/xosSynchronizerNotifier.html
index ef69861..9574bf4 100644
--- a/xos/core/xoslib/dashboards/xosSynchronizerNotifier.html
+++ b/xos/core/xoslib/dashboards/xosSynchronizerNotifier.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosTenant.html b/xos/core/xoslib/dashboards/xosTenant.html
index 928b16c..180ce7e 100644
--- a/xos/core/xoslib/dashboards/xosTenant.html
+++ b/xos/core/xoslib/dashboards/xosTenant.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosTruckroll.html b/xos/core/xoslib/dashboards/xosTruckroll.html
index 2068e6c..4288a00 100644
--- a/xos/core/xoslib/dashboards/xosTruckroll.html
+++ b/xos/core/xoslib/dashboards/xosTruckroll.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/dashboards/xosUITutorial.html b/xos/core/xoslib/dashboards/xosUITutorial.html
index 203c3a1..f5ce322 100644
--- a/xos/core/xoslib/dashboards/xosUITutorial.html
+++ b/xos/core/xoslib/dashboards/xosUITutorial.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!-- browserSync -->
 
 <!-- endcss -->
diff --git a/xos/core/xoslib/karma.conf.js b/xos/core/xoslib/karma.conf.js
index cea4d8c..ce986db 100644
--- a/xos/core/xoslib/karma.conf.js
+++ b/xos/core/xoslib/karma.conf.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 // Karma configuration
 // Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
 
diff --git a/xos/core/xoslib/methods/__init__.py b/xos/core/xoslib/methods/__init__.py
index c777668..bf52612 100644
--- a/xos/core/xoslib/methods/__init__.py
+++ b/xos/core/xoslib/methods/__init__.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.views.generic import View
 from django.conf.urls import patterns, url
 from rest_framework.routers import DefaultRouter
diff --git a/xos/core/xoslib/methods/loginview.py b/xos/core/xoslib/methods/loginview.py
index 49a6d16..ce64ec5 100644
--- a/xos/core/xoslib/methods/loginview.py
+++ b/xos/core/xoslib/methods/loginview.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/core/xoslib/methods/plus.py b/xos/core/xoslib/methods/plus.py
index 294fba8..6b9f41c 100644
--- a/xos/core/xoslib/methods/plus.py
+++ b/xos/core/xoslib/methods/plus.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework import generics
 from rest_framework import serializers
 from rest_framework.response import Response
diff --git a/xos/core/xoslib/methods/portforwarding.py b/xos/core/xoslib/methods/portforwarding.py
index c98b1bd..eef1e39 100644
--- a/xos/core/xoslib/methods/portforwarding.py
+++ b/xos/core/xoslib/methods/portforwarding.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/core/xoslib/methods/sliceplus.py b/xos/core/xoslib/methods/sliceplus.py
index 6908d3c..4a0d5f8 100644
--- a/xos/core/xoslib/methods/sliceplus.py
+++ b/xos/core/xoslib/methods/sliceplus.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/core/xoslib/methods/sshkeys.py b/xos/core/xoslib/methods/sshkeys.py
index 705a968..f873518 100644
--- a/xos/core/xoslib/methods/sshkeys.py
+++ b/xos/core/xoslib/methods/sshkeys.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/core/xoslib/methods/tenantview.py b/xos/core/xoslib/methods/tenantview.py
index e505b1c..121b946 100644
--- a/xos/core/xoslib/methods/tenantview.py
+++ b/xos/core/xoslib/methods/tenantview.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/core/xoslib/objects/__init__.py b/xos/core/xoslib/objects/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/core/xoslib/objects/__init__.py
+++ b/xos/core/xoslib/objects/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/core/xoslib/objects/plus.py b/xos/core/xoslib/objects/plus.py
index da59ac7..42b200f 100644
--- a/xos/core/xoslib/objects/plus.py
+++ b/xos/core/xoslib/objects/plus.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ PlusObjectMixin
 
     Implements fields that are common to all OpenCloud objects. For example,
diff --git a/xos/core/xoslib/objects/sliceplus.py b/xos/core/xoslib/objects/sliceplus.py
index 5086f79..fd53c34 100644
--- a/xos/core/xoslib/objects/sliceplus.py
+++ b/xos/core/xoslib/objects/sliceplus.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from core.models import Slice, Privilege, SliceRole, Instance, Site, Node, User
 from plus import PlusObjectMixin
 from operator import itemgetter, attrgetter
diff --git a/xos/core/xoslib/spec/helpers/jasmine-jquery.js b/xos/core/xoslib/spec/helpers/jasmine-jquery.js
index 7713331..1d1ef7d3 100644
--- a/xos/core/xoslib/spec/helpers/jasmine-jquery.js
+++ b/xos/core/xoslib/spec/helpers/jasmine-jquery.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*!
 Jasmine-jQuery: a set of jQuery helpers for Jasmine tests.
 
diff --git a/xos/core/xoslib/spec/smoke.test.js b/xos/core/xoslib/spec/smoke.test.js
index 2c27544..bb63170 100644
--- a/xos/core/xoslib/spec/smoke.test.js
+++ b/xos/core/xoslib/spec/smoke.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The test environment', () => {
diff --git a/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/make_same_width.html b/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/make_same_width.html
index 8227c99..8b09bc7 100644
--- a/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/make_same_width.html
+++ b/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/make_same_width.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="container">
   <div style="width: 200px"></div>
   <div style="width: 300px"></div>
diff --git a/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/table_rows.html b/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/table_rows.html
index 417108d..30bb595 100644
--- a/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/table_rows.html
+++ b/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/table_rows.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="container">
   <table class="test-table" border="2">
     <tr>
diff --git a/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/template_from_id.html b/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/template_from_id.html
index 02dcb96..c8c5899 100644
--- a/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/template_from_id.html
+++ b/xos/core/xoslib/spec/xoslib/fixtures/xos-utils/template_from_id.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <script type="text/template" id="static-test">
   <p>Test Template</p>
 </script>
diff --git a/xos/core/xoslib/spec/xoslib/xos-backbone.test.js b/xos/core/xoslib/spec/xoslib/xos-backbone.test.js
index 90d3c83..b9a8913 100644
--- a/xos/core/xoslib/spec/xoslib/xos-backbone.test.js
+++ b/xos/core/xoslib/spec/xoslib/xos-backbone.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The Xos Backbone', () => {
diff --git a/xos/core/xoslib/spec/xoslib/xos-helper.test.js b/xos/core/xoslib/spec/xoslib/xos-helper.test.js
index 7c0a506..29394d8 100644
--- a/xos/core/xoslib/spec/xoslib/xos-helper.test.js
+++ b/xos/core/xoslib/spec/xoslib/xos-helper.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* eslint-disable no-unused-vars*/
 'use strict';
 
diff --git a/xos/core/xoslib/spec/xoslib/xos-utils.test.js b/xos/core/xoslib/spec/xoslib/xos-utils.test.js
index 52de8d8..a8af07a 100644
--- a/xos/core/xoslib/spec/xoslib/xos-utils.test.js
+++ b/xos/core/xoslib/spec/xoslib/xos-utils.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 describe('The XOS Lib Utilities', function(){
diff --git a/xos/core/xoslib/spec/xoslib/xoslib.test.js b/xos/core/xoslib/spec/xoslib/xoslib.test.js
index 97d85f9..eb598b5 100644
--- a/xos/core/xoslib/spec/xoslib/xoslib.test.js
+++ b/xos/core/xoslib/spec/xoslib/xoslib.test.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* eslint-disable new-cap*/
 'use strict';
 
diff --git a/xos/core/xoslib/static/css/cord.css b/xos/core/xoslib/static/css/cord.css
index 9757f5d..5f31167 100644
--- a/xos/core/xoslib/static/css/cord.css
+++ b/xos/core/xoslib/static/css/cord.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 .cord-subscriber-table-old td {
     padding-top: 5px;
 }
diff --git a/xos/core/xoslib/static/css/xosCeilometerDashboard.css b/xos/core/xoslib/static/css/xosCeilometerDashboard.css
index 5242fda..7cebdff 100644
--- a/xos/core/xoslib/static/css/xosCeilometerDashboard.css
+++ b/xos/core/xoslib/static/css/xosCeilometerDashboard.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosCeilometerDashboard{position:relative}.panel{margin-top:10px}.panel-body:not(:first-child){border-top:1px solid #e3e3e3}.panel-body .row{margin-top:10px}.chart{width:100%;height:300px}.btn-chart,.btn-chart:hover{color:#fff}.side-container{position:relative}.service-list{margin-top:-10px}.service-list h3{margin-top:0;margin-bottom:0}.service-list a{text-decoration:none;color:#333}.meters,.stats{margin-top:25px;position:absolute;top:0;left:0;width:100%;margin-bottom:50px}.loader{font-size:10px;margin:150px auto;text-indent:-9999em;width:11em;height:11em;border-radius:50%;background:#fff;background:linear-gradient(to right,#fff 10%,rgba(255,255,255,0) 42%);position:relative;animation:load3 1.4s infinite linear;transform:translateZ(0)}.loader:before{width:50%;height:50%;background:#105e9e;border-radius:100% 0 0;position:absolute;top:0;left:0;content:''}.loader:after{background:#fff;width:75%;height:75%;border-radius:50%;content:'';margin:auto;position:absolute;top:0;left:0;bottom:0;right:0}@keyframes load3{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}[ui-view]{position:absolute;top:0;left:0;width:100%;margin-bottom:100px}[ui-view].ceilometerDashboard.ng-leave{animation:1s bounceOutLeft ease}[ui-view].samples.ng-enter{animation:1s bounceInRight ease}[ui-view].samples.ng-leave{animation:1s bounceOutRight ease}[ui-view].ceilometerDashboard.ng-enter{animation:1s bounceInLeft ease}.animate .animate-slide-left.ng-hide-remove{animation:.5s bounceInRight ease}.animate .animate-slide-left.ng-hide-add{animation:.5s bounceOutRight ease}@keyframes bounceInRight{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}from{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes bounceInLeft{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1.000)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes slideInUp{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes slideOutDown{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}
diff --git a/xos/core/xoslib/static/css/xosContentProvider.css b/xos/core/xoslib/static/css/xosContentProvider.css
index e69de29..e41be01 100644
--- a/xos/core/xoslib/static/css/xosContentProvider.css
+++ b/xos/core/xoslib/static/css/xosContentProvider.css
@@ -0,0 +1,18 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
diff --git a/xos/core/xoslib/static/css/xosDashboardManager.css b/xos/core/xoslib/static/css/xosDashboardManager.css
index 67c5af0..e94176f 100644
--- a/xos/core/xoslib/static/css/xosDashboardManager.css
+++ b/xos/core/xoslib/static/css/xosDashboardManager.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDashboardManager .col-xs-10+.col-xs-2.text-right{padding-top:20px}#xosDashboardManager ul[dnd-list]{min-height:42px;border:1px dashed #337ab7;padding:20px;margin-bottom:0}#xosDashboardManager ul[dnd-list] li{list-style:none}#xosDashboardManager ul[dnd-list] li:not(:last-child){margin-bottom:20px}#xosDashboardManager ul[dnd-list] li:hover{cursor:pointer}#xosDashboardManager ul[dnd-list] li.dndDraggingSource{display:none}#xosDashboardManager ul[dnd-list]>li,#xosDashboardManager .dashboard-container{display:block;border:1px solid #337ab7;padding:20px}#xosDashboardManager ul[dnd-list]>li a,#xosDashboardManager .dashboard-container a{text-decoration:none!important}#xosDashboardManager ul[dnd-list]>li a img,#xosDashboardManager .dashboard-container a img{width:20px}#xosDashboardManager ul[dnd-list]>li i,#xosDashboardManager .dashboard-container i{float:right}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosDeveloper.css b/xos/core/xoslib/static/css/xosDeveloper.css
index dee3249..0b00e98 100644
--- a/xos/core/xoslib/static/css/xosDeveloper.css
+++ b/xos/core/xoslib/static/css/xosDeveloper.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDeveloper .pie-legend li{display:inline-block;white-space:nowrap;position:relative;margin-bottom:4px;border-radius:5px;padding:2px 8px 2px 28px;font-size:smaller;cursor:default}#xosDeveloper .pie-legend-icon{display:block;position:absolute;left:0;top:0;width:20px;height:20px;border-radius:5px}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosDiagnostic.css b/xos/core/xoslib/static/css/xosDiagnostic.css
index 757f7df..bf027be 100644
--- a/xos/core/xoslib/static/css/xosDiagnostic.css
+++ b/xos/core/xoslib/static/css/xosDiagnostic.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosDiagnostic,[ui-view]{height:100%;min-height:700px;position:relative}diagnostic-container .form-control.small-padding{padding:6px}diagnostic-container .half-height{position:relative;height:50%}diagnostic-container .onethird-height{position:relative;height:33%;border-bottom:1px solid #999}diagnostic-container .twothird-height{position:relative;height:67%}diagnostic-container .subscriber-select{max-width:200px;position:absolute;top:20px;right:20px;z-index:1}diagnostic-container .onethird-height .well,diagnostic-container .twothird-height .well{font-weight:700;max-width:165px;text-align:center;margin-top:15px;background:#eee;border-color:steelblue;padding:10px}diagnostic-container .onethird-height .well.pull-right{position:absolute;right:0;top:-15px;cursor:pointer;z-index:200}subscriber-status-modal .row+.row{margin-top:20px}.half-height+.half-height{border-top:1px solid black}service-topology,logic-topology{height:100%;width:100%;display:block;position:absolute;top:0}logic-topology .subscriber circle,logic-topology .device circle{fill:#fff;stroke:green;stroke-width:1px}logic-topology>svg{position:absolute;top:0}logic-topology .network .cloud{fill:#fff;stroke:green;stroke-width:1px}logic-topology .node.rack>g>rect{fill:#ccc;stroke:steelblue;stroke-width:1px}logic-topology .compute-node>rect{fill:#fff;stroke:steelblue;stroke-width:1px}logic-topology .compute-node>text{font-size:16px}logic-topology .instance>rect{fill:#eee;stroke:steelblue;stroke-width:1px}logic-topology .node .instance.active rect{fill:lightsteelblue;stroke:steelblue;stroke-width:1px}logic-topology .node .instance.active.good>rect{fill:green}logic-topology .node .instance.active.provisioning>rect{fill:yellow}logic-topology .node .instance.active.bad>rect{fill:red}logic-topology .node .instance .stats-container rect{fill:white}logic-topology .node .instance .stats-container text.name{font-weight:700}logic-topology .node .instance .stats-container text.ip{font-style:italic;font-size:10px}logic-topology .node .instance .stats-container .container rect{fill:#eee;stroke:steelblue;stroke-width:1px}.legend{fill:#fff;stroke:#ccc;stroke-width:1px;position:relative}.legend text{stroke:#000}.node{cursor:pointer}.node circle,.node rect{fill:#fff;stroke:steelblue;stroke-width:1px}.node.subscriber circle,.node.subscriber rect,.node.router circle,.node.router rect{stroke:#05ffcb}.node.slice rect{stroke:#b01dff}.node.instance rect{stroke:#ccc}.node.instance rect.active{stroke:#ff8b00}.node rect.slice-detail{fill:#fff;stroke:steelblue;stroke-width:3px}.node text{font:18px sans-serif}.node .instance text{font:12px sans-serif}.node text.small{font-size:10px}.link,.device-link{fill:none;stroke:#ccc;stroke-width:2px}.link.slice{stroke:rgba(157,4,183,.29)}.link.instance{stroke:#ccc}.link.instance.active{stroke:rgba(255,138,0,.65)}.service-details{width:200px;position:absolute;top:20px;right:20px}.animate.ng-hide-remove{animation:.5s bounceInRight ease}.animate.ng-hide-add{animation:.5s bounceOutRight ease}.loader{font-size:10px;margin:150px auto;text-indent:-9999em;width:11em;height:11em;border-radius:50%;background:#fff;background:linear-gradient(to right,#fff 10%,rgba(255,255,255,0) 42%);position:relative;animation:load3 1.4s infinite linear;transform:translateZ(0)}.loader:before{width:50%;height:50%;background:#105e9e;border-radius:100% 0 0;position:absolute;top:0;left:0;content:''}.loader:after{background:#fff;width:75%;height:75%;border-radius:50%;content:'';margin:auto;position:absolute;top:0;left:0;bottom:0;right:0}@keyframes load3{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.modal.fade.in{display:block}@keyframes bounceInRight{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosEcordTopology.css b/xos/core/xoslib/static/css/xosEcordTopology.css
index 42fb53f..3bc70be 100644
--- a/xos/core/xoslib/static/css/xosEcordTopology.css
+++ b/xos/core/xoslib/static/css/xosEcordTopology.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 elan-map{display:block;width:100%;height:380px;position:relative}elan-map svg{position:absolute;top:0;left:0}elan-map circle.elan,elan-map rect.elan{stroke:#5bc0de;stroke-width:2;fill:#fff}elan-map circle.elan,elan-map circle.uni{cursor:pointer}elan-map .node.uni circle.uni,elan-map .node.uni rect.uni{stroke:#ce5650;stroke-width:2;fill:#fff}elan-map .node.uni path{fill:#902d28}elan-map line{stroke:#ce5650;stroke-width:1}elan-map #map{background:#efebe2}elan-map .subunit{fill:#b7daff;stroke:white;stroke-width:1px}elan-map .subunit._10{fill:transparent;stroke:transparent}elan-map .exterior-boundary{fill:none;stroke:black;stroke-linejoin:round;stroke-width:1px}
 .service-container .btn{font-size:12px}.sla input.input-sm{max-width:60px;text-align:right}
 @charset "UTF-8";/*!
diff --git a/xos/core/xoslib/static/css/xosGlobalXos.css b/xos/core/xoslib/static/css/xosGlobalXos.css
index fa52459..d2b40f3 100644
--- a/xos/core/xoslib/static/css/xosGlobalXos.css
+++ b/xos/core/xoslib/static/css/xosGlobalXos.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosGlobalXos ui-view,#xosGlobalXos xos-list{display:block}#xosGlobalXos .well.active{background:#337ab7;color:#fff}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosHpc.css b/xos/core/xoslib/static/css/xosHpc.css
index e9458ad..3aec11f 100644
--- a/xos/core/xoslib/static/css/xosHpc.css
+++ b/xos/core/xoslib/static/css/xosHpc.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosHpc .btn.btn-reload{margin-top:20px}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosLib.css b/xos/core/xoslib/static/css/xosLib.css
index d2f9349..7e11db1 100644
--- a/xos/core/xoslib/static/css/xosLib.css
+++ b/xos/core/xoslib/static/css/xosLib.css
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /* Style helpers for xoslib*/
 
 
diff --git a/xos/core/xoslib/static/css/xosMcord-slicing.css b/xos/core/xoslib/static/css/xosMcord-slicing.css
index f47e896..0f6b05a 100644
--- a/xos/core/xoslib/static/css/xosMcord-slicing.css
+++ b/xos/core/xoslib/static/css/xosMcord-slicing.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosMcord-slicing,#xosMcord-slicing>[ui-view],slicing-topo{width:100%;height:100%}slicing-topo{display:block}#xosMcord-slicing .node{stroke:#337ab7;fill:white}#xosMcord-slicing .node,#xosMcord-slicing .node+text{cursor:pointer}#xosMcord-slicing text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#xosMcord-slicing .node.control{stroke-dasharray:5;stroke:#d9534f}#xosMcord-slicing .node.button{stroke-dasharray:5;stroke:#5bc0de;fill:#daf1f8}#xosMcord-slicing .node.selected{stroke-width:5px;stroke-dasharray:5}#xosMcord-slicing .node~.icon{stroke:#337ab7;fill:#337ab7}#xosMcord-slicing .node.control~.icon{stroke:#d9534f;fill:#d9534f}#xosMcord-slicing .link{stroke:#286090;stroke-width:2px;cursor:pointer}#xosMcord-slicing .link.control{stroke-dasharray:5;stroke:#d9534f}#xosMcord-slicing .link.selected{stroke-width:5px;stroke-dasharray:5}#xosMcord-slicing .dragline{stroke-dasharray:5;stroke:#286090;stroke-width:2px}#xosMcord-slicing .dragline.hidden{stroke-width:0}#xosMcord-slicing div.element-form{position:absolute;border:1px solid #5bc0de;padding:10px;background:#fff}#xosMcord-slicing .form-line{stroke:#31b0d5;stroke-width:1px}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosMcordTopology.css b/xos/core/xoslib/static/css/xosMcordTopology.css
index fe0343c..87e2cc8 100644
--- a/xos/core/xoslib/static/css/xosMcordTopology.css
+++ b/xos/core/xoslib/static/css/xosMcordTopology.css
@@ -1,2 +1,20 @@
 
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
+
 #xosMcordTopology{height:700px}[ui-view],m-cord-topology{width:100%;height:100%;display:block}line{stroke:blue}line.big{stroke-width:2}circle,rect{fill:#fff;stroke-width:1}.fabric{stroke:none;fill:#123456;fill-rule:evenodd}.fabric-container{fill:transparent;stroke:#000;stroke-width:1}.bbu{stroke:black;fill:#ff7f0e}.rru{stroke:#000;fill:#ffbb78}.rru.antenna{stroke:#000;fill:brown}.rru-shadow{fill:#ffbb78;opacity:.4}.MME,.SGW,.PGW,.Vid{fill:purple;stroke:#000}rect.MME,rect.SGW,rect.PGW,rect.bbu,rect.Vid{fill:#fff;stroke:#fff}.bbu text,.MME text,.SGW text,.PGW text,.Vid text{font-size:10px;stroke-width:0;fill:#000}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosOpenVPNDashboard.css b/xos/core/xoslib/static/css/xosOpenVPNDashboard.css
index 022e50e..567bbe4 100644
--- a/xos/core/xoslib/static/css/xosOpenVPNDashboard.css
+++ b/xos/core/xoslib/static/css/xosOpenVPNDashboard.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosOpenVPNDashboard{width:70%;margin:auto}#xosOpenVPNDashboard .vpn-row{display:table-row}#xosOpenVPNDashboard .vpn-cell{display:table-cell;padding:5px}#xosOpenVPNDashboard .vpn-header{font-weight:700}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosServiceGrid.css b/xos/core/xoslib/static/css/xosServiceGrid.css
index 8264530..69d1bd7 100644
--- a/xos/core/xoslib/static/css/xosServiceGrid.css
+++ b/xos/core/xoslib/static/css/xosServiceGrid.css
@@ -1,2 +1,20 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 xos-side-panel .xos-side-panel-content{position:fixed;width:30%;height:100%;padding:25px;background:#fff;overflow:scroll}xos-side-panel .xos-side-panel-content.right{border-left:1px solid #555;top:0;right:0;visibility:hidden;box-shadow:-10px 0 20px -8px rgba(0,0,0,.75)}xos-side-panel .xos-side-panel-content.right.out{animation:.5s slideOutRight ease-in-out;visibility:visible}xos-side-panel .xos-side-panel-content.right.in{animation:.5s slideInRight ease-in-out;visibility:visible}@keyframes slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideOutRight{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}#xosServiceGrid{width:100%}#xosServiceGrid service-graph{display:block;width:100%;height:600px}#xosServiceGrid .node{stroke:#337ab7;fill:white}#xosServiceGrid .node.xos{fill:#d9534f}#xosServiceGrid .link{stroke:#286090;stroke-width:2px}#xosServiceGrid .link-arrow{stroke:#286090;fill:#286090}
 xos-side-panel .xos-side-panel-content{position:fixed;width:30%;height:100%;padding:25px;background:#fff;overflow:scroll}xos-side-panel .xos-side-panel-content.right{border-left:1px solid #555;top:0;right:0;visibility:hidden;box-shadow:-10px 0 20px -8px rgba(0,0,0,.75)}xos-side-panel .xos-side-panel-content.right.out{animation:.5s slideOutRight ease-in-out;visibility:visible}xos-side-panel .xos-side-panel-content.right.in{animation:.5s slideInRight ease-in-out;visibility:visible}@keyframes slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideOutRight{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosSynchronizerNotifier.css b/xos/core/xoslib/static/css/xosSynchronizerNotifier.css
index 89374fb..f62c8bd 100644
--- a/xos/core/xoslib/static/css/xosSynchronizerNotifier.css
+++ b/xos/core/xoslib/static/css/xosSynchronizerNotifier.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosSynchronizerNotifier{float:left}#xosSynchronizerNotifier .alert{margin-bottom:0!important}#xosSynchronizerNotifier .sync-status-container{position:relative;z-index:200}#xosSynchronizerNotifier .notification-panel{position:absolute;width:200px}#xosSynchronizerNotifier sync-status .badge.success{background-color:#5cb85c}#xosSynchronizerNotifier sync-status .badge.warning{background-color:#f0ad4e}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosTenant.css b/xos/core/xoslib/static/css/xosTenant.css
index 2ef5d87..c71874b 100644
--- a/xos/core/xoslib/static/css/xosTenant.css
+++ b/xos/core/xoslib/static/css/xosTenant.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosTenant [ui-view]{margin-bottom:100px}#xosTenant a{margin-bottom:15px}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosTruckroll.css b/xos/core/xoslib/static/css/xosTruckroll.css
index 3d1fd2f..fc13e98 100644
--- a/xos/core/xoslib/static/css/xosTruckroll.css
+++ b/xos/core/xoslib/static/css/xosTruckroll.css
@@ -1,2 +1,20 @@
 
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
+
 .row+.row{margin-top:20px}.animate-vertical.ng-hide-add{animation:.5s slideOutDown ease-in-out}.animate-vertical.ng-hide-remove{animation:.5s slideInUp ease-in-out}@keyframes slideInUp{from{transform:translate3d(0,100%,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}@keyframes slideOutDown{from{transform:translate3d(0,0,0);opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}.loader{font-size:10px;margin:0 auto;text-indent:-9999em;width:11em;height:11em;border-radius:50%;background:#fff;background:linear-gradient(to right,#fff 10%,rgba(255,255,255,0) 42%);position:relative;animation:load3 1.4s infinite linear;transform:translateZ(0)}.loader:before{width:50%;height:50%;background:#105e9e;border-radius:100% 0 0;position:absolute;top:0;left:0;content:''}.loader:after{background:#fff;width:75%;height:75%;border-radius:50%;content:'';margin:auto;position:absolute;top:0;left:0;bottom:0;right:0}@keyframes load3{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/css/xosUITutorial.css b/xos/core/xoslib/static/css/xosUITutorial.css
index 9bd2a34..6434da8 100644
--- a/xos/core/xoslib/static/css/xosUITutorial.css
+++ b/xos/core/xoslib/static/css/xosUITutorial.css
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 #xosUITutorial{width:100%}#xosUITutorial js-shell{display:block}#xosUITutorial js-shell #shell-panel{width:100%;height:400px;background:#002b36;padding:10px;overflow:scroll;color:#93a1a1}#xosUITutorial js-shell #shell-panel .prompt{color:#d33682}#xosUITutorial js-shell #shell-panel .input{color:#268bd2}#xosUITutorial js-shell #shell-panel .cursor{color:#2aa198}#xosUITutorial js-shell #shell-panel .error{color:#dc322f}#xosUITutorial js-shell #shell-panel #shell-view>div>div{color:#268bd2}#xosUITutorial js-shell #shell-panel #shell-view .jsonObject{white-space:nowrap}#xosUITutorial js-shell #shell-panel #shell-view .jsonCollection>.jsonObject{margin-left:10px}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/vendor/xosEcordTopologyVendor.js b/xos/core/xoslib/static/js/vendor/xosEcordTopologyVendor.js
index 11b57c0..57a3208 100644
--- a/xos/core/xoslib/static/js/vendor/xosEcordTopologyVendor.js
+++ b/xos/core/xoslib/static/js/vendor/xosEcordTopologyVendor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 if(function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function n(t){var e="length"in t&&t.length,n=Z.type(t);return"function"!==n&&!Z.isWindow(t)&&(!(1!==t.nodeType||!e)||("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t))}function i(t,e,n){if(Z.isFunction(e))return Z.grep(t,function(t,i){return!!e.call(t,i,t)!==n});if(e.nodeType)return Z.grep(t,function(t){return t===e!==n});if("string"==typeof e){if(at.test(e))return Z.filter(e,t,n);e=Z.filter(e,t)}return Z.grep(t,function(t){return z.call(e,t)>=0!==n})}function o(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function r(t){var e=ht[t]={};return Z.each(t.match(dt)||[],function(t,n){e[n]=!0}),e}function s(){J.removeEventListener("DOMContentLoaded",s,!1),t.removeEventListener("load",s,!1),Z.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Z.expando+a.uid++}function l(t,e,n){var i;if(void 0===n&&1===t.nodeType)if(i="data-"+e.replace(xt,"-$1").toLowerCase(),n=t.getAttribute(i),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:bt.test(n)?Z.parseJSON(n):n)}catch(o){}yt.set(t,e,n)}else n=void 0;return n}function c(){return!0}function u(){return!1}function f(){try{return J.activeElement}catch(t){}}function p(t,e){return Z.nodeName(t,"table")&&Z.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function d(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function h(t){var e=Pt.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function g(t,e){for(var n=0,i=t.length;n<i;n++)vt.set(t[n],"globalEval",!e||vt.get(e[n],"globalEval"))}function m(t,e){var n,i,o,r,s,a,l,c;if(1===e.nodeType){if(vt.hasData(t)&&(r=vt.access(t),s=vt.set(e,r),c=r.events)){delete s.handle,s.events={};for(o in c)for(n=0,i=c[o].length;n<i;n++)Z.event.add(e,o,c[o][n])}yt.hasData(t)&&(a=yt.access(t),l=Z.extend({},a),yt.set(e,l))}}function v(t,e){var n=t.getElementsByTagName?t.getElementsByTagName(e||"*"):t.querySelectorAll?t.querySelectorAll(e||"*"):[];return void 0===e||e&&Z.nodeName(t,e)?Z.merge([t],n):n}function y(t,e){var n=e.nodeName.toLowerCase();"input"===n&&Et.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function b(e,n){var i,o=Z(n.createElement(e)).appendTo(n.body),r=t.getDefaultComputedStyle&&(i=t.getDefaultComputedStyle(o[0]))?i.display:Z.css(o[0],"display");return o.detach(),r}function x(t){var e=J,n=Mt[t];return n||(n=b(t,e),"none"!==n&&n||(Ft=(Ft||Z("<iframe frameborder='0' width='0' height='0'/>")).appendTo(e.documentElement),e=Ft[0].contentDocument,e.write(),e.close(),n=b(t,e),Ft.detach()),Mt[t]=n),n}function w(t,e,n){var i,o,r,s,a=t.style;return n=n||Bt(t),n&&(s=n.getPropertyValue(e)||n[e]),n&&(""!==s||Z.contains(t.ownerDocument,t)||(s=Z.style(t,e)),_t.test(s)&&Wt.test(e)&&(i=a.width,o=a.minWidth,r=a.maxWidth,a.minWidth=a.maxWidth=a.width=s,s=n.width,a.width=i,a.minWidth=o,a.maxWidth=r)),void 0!==s?s+"":s}function T(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function C(t,e){if(e in t)return e;for(var n=e[0].toUpperCase()+e.slice(1),i=e,o=Gt.length;o--;)if(e=Gt[o]+n,e in t)return e;return i}function E(t,e,n){var i=Vt.exec(e);return i?Math.max(0,i[1]-(n||0))+(i[2]||"px"):e}function $(t,e,n,i,o){for(var r=n===(i?"border":"content")?4:"width"===e?1:0,s=0;r<4;r+=2)"margin"===n&&(s+=Z.css(t,n+Tt[r],!0,o)),i?("content"===n&&(s-=Z.css(t,"padding"+Tt[r],!0,o)),"margin"!==n&&(s-=Z.css(t,"border"+Tt[r]+"Width",!0,o))):(s+=Z.css(t,"padding"+Tt[r],!0,o),"padding"!==n&&(s+=Z.css(t,"border"+Tt[r]+"Width",!0,o)));return s}function k(t,e,n){var i=!0,o="width"===e?t.offsetWidth:t.offsetHeight,r=Bt(t),s="border-box"===Z.css(t,"boxSizing",!1,r);if(o<=0||null==o){if(o=w(t,e,r),(o<0||null==o)&&(o=t.style[e]),_t.test(o))return o;i=s&&(Y.boxSizingReliable()||o===t.style[e]),o=parseFloat(o)||0}return o+$(t,e,n||(s?"border":"content"),i,r)+"px"}function S(t,e){for(var n,i,o,r=[],s=0,a=t.length;s<a;s++)i=t[s],i.style&&(r[s]=vt.get(i,"olddisplay"),n=i.style.display,e?(r[s]||"none"!==n||(i.style.display=""),""===i.style.display&&Ct(i)&&(r[s]=vt.access(i,"olddisplay",x(i.nodeName)))):(o=Ct(i),"none"===n&&o||vt.set(i,"olddisplay",o?n:Z.css(i,"display"))));for(s=0;s<a;s++)i=t[s],i.style&&(e&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=e?r[s]||"":"none"));return t}function N(t,e,n,i,o){return new N.prototype.init(t,e,n,i,o)}function D(){return setTimeout(function(){Yt=void 0}),Yt=Z.now()}function A(t,e){var n,i=0,o={height:t};for(e=e?1:0;i<4;i+=2-e)n=Tt[i],o["margin"+n]=o["padding"+n]=t;return e&&(o.opacity=o.width=t),o}function j(t,e,n){for(var i,o=(ne[e]||[]).concat(ne["*"]),r=0,s=o.length;r<s;r++)if(i=o[r].call(n,e,t))return i}function O(t,e,n){var i,o,r,s,a,l,c,u,f=this,p={},d=t.style,h=t.nodeType&&Ct(t),g=vt.get(t,"fxshow");n.queue||(a=Z._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,l=a.empty.fire,a.empty.fire=function(){a.unqueued||l()}),a.unqueued++,f.always(function(){f.always(function(){a.unqueued--,Z.queue(t,"fx").length||a.empty.fire()})})),1===t.nodeType&&("height"in e||"width"in e)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],c=Z.css(t,"display"),u="none"===c?vt.get(t,"olddisplay")||x(t.nodeName):c,"inline"===u&&"none"===Z.css(t,"float")&&(d.display="inline-block")),n.overflow&&(d.overflow="hidden",f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in e)if(o=e[i],Kt.exec(o)){if(delete e[i],r=r||"toggle"===o,o===(h?"hide":"show")){if("show"!==o||!g||void 0===g[i])continue;h=!0}p[i]=g&&g[i]||Z.style(t,i)}else c=void 0;if(Z.isEmptyObject(p))"inline"===("none"===c?x(t.nodeName):c)&&(d.display=c);else{g?"hidden"in g&&(h=g.hidden):g=vt.access(t,"fxshow",{}),r&&(g.hidden=!h),h?Z(t).show():f.done(function(){Z(t).hide()}),f.done(function(){var e;vt.remove(t,"fxshow");for(e in p)Z.style(t,e,p[e])});for(i in p)s=j(h?g[i]:0,i,f),i in g||(g[i]=s.start,h&&(s.end=s.start,s.start="width"===i||"height"===i?1:0))}}function I(t,e){var n,i,o,r,s;for(n in t)if(i=Z.camelCase(n),o=e[i],r=t[n],Z.isArray(r)&&(o=r[1],r=t[n]=r[0]),n!==i&&(t[i]=r,delete t[n]),s=Z.cssHooks[i],s&&"expand"in s){r=s.expand(r),delete t[i];for(n in r)n in t||(t[n]=r[n],e[n]=o)}else e[i]=o}function L(t,e,n){var i,o,r=0,s=ee.length,a=Z.Deferred().always(function(){delete l.elem}),l=function(){if(o)return!1;for(var e=Yt||D(),n=Math.max(0,c.startTime+c.duration-e),i=n/c.duration||0,r=1-i,s=0,l=c.tweens.length;s<l;s++)c.tweens[s].run(r);return a.notifyWith(t,[c,r,n]),r<1&&l?n:(a.resolveWith(t,[c]),!1)},c=a.promise({elem:t,props:Z.extend({},e),opts:Z.extend(!0,{specialEasing:{}},n),originalProperties:e,originalOptions:n,startTime:Yt||D(),duration:n.duration,tweens:[],createTween:function(e,n){var i=Z.Tween(t,c.opts,e,n,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(i),i},stop:function(e){var n=0,i=e?c.tweens.length:0;if(o)return this;for(o=!0;n<i;n++)c.tweens[n].run(1);return e?a.resolveWith(t,[c,e]):a.rejectWith(t,[c,e]),this}}),u=c.props;for(I(u,c.opts.specialEasing);r<s;r++)if(i=ee[r].call(c,t,u,c.opts))return i;return Z.map(u,j,c),Z.isFunction(c.opts.start)&&c.opts.start.call(t,c),Z.fx.timer(Z.extend(l,{elem:t,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function R(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,o=0,r=e.toLowerCase().match(dt)||[];if(Z.isFunction(n))for(;i=r[o++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function P(t,e,n,i){function o(a){var l;return r[a]=!0,Z.each(t[a]||[],function(t,a){var c=a(e,n,i);return"string"!=typeof c||s||r[c]?s?!(l=c):void 0:(e.dataTypes.unshift(c),o(c),!1)}),l}var r={},s=t===be;return o(e.dataTypes[0])||!r["*"]&&o("*")}function q(t,e){var n,i,o=Z.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((o[n]?t:i||(i={}))[n]=e[n]);return i&&Z.extend(!0,t,i),t}function H(t,e,n){for(var i,o,r,s,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)r=l[0];else{for(o in n){if(!l[0]||t.converters[o+" "+l[0]]){r=o;break}s||(s=o)}r=r||s}if(r)return r!==l[0]&&l.unshift(r),n[r]}function F(t,e,n,i){var o,r,s,a,l,c={},u=t.dataTypes.slice();if(u[1])for(s in t.converters)c[s.toLowerCase()]=t.converters[s];for(r=u.shift();r;)if(t.responseFields[r]&&(n[t.responseFields[r]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=r,r=u.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(s=c[l+" "+r]||c["* "+r],!s)for(o in c)if(a=o.split(" "),a[1]===r&&(s=c[l+" "+a[0]]||c["* "+a[0]])){s===!0?s=c[o]:c[o]!==!0&&(r=a[0],u.unshift(a[1]));break}if(s!==!0)if(s&&t["throws"])e=s(e);else try{e=s(e)}catch(f){return{state:"parsererror",error:s?f:"No conversion from "+l+" to "+r}}}return{state:"success",data:e}}function M(t,e,n,i){var o;if(Z.isArray(e))Z.each(e,function(e,o){n||Ee.test(t)?i(t,o):M(t+"["+("object"==typeof o?e:"")+"]",o,n,i)});else if(n||"object"!==Z.type(e))i(t,e);else for(o in e)M(t+"["+o+"]",e[o],n,i)}function W(t){return Z.isWindow(t)?t:9===t.nodeType&&t.defaultView}var _=[],B=_.slice,U=_.concat,V=_.push,z=_.indexOf,X={},Q=X.toString,G=X.hasOwnProperty,Y={},J=t.document,K="2.1.4",Z=function(t,e){return new Z.fn.init(t,e)},tt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,et=/^-ms-/,nt=/-([\da-z])/gi,it=function(t,e){return e.toUpperCase()};Z.fn=Z.prototype={jquery:K,constructor:Z,selector:"",length:0,toArray:function(){return B.call(this)},get:function(t){return null!=t?t<0?this[t+this.length]:this[t]:B.call(this)},pushStack:function(t){var e=Z.merge(this.constructor(),t);return e.prevObject=this,e.context=this.context,e},each:function(t,e){return Z.each(this,t,e)},map:function(t){return this.pushStack(Z.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(B.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:V,sort:_.sort,splice:_.splice},Z.extend=Z.fn.extend=function(){var t,e,n,i,o,r,s=arguments[0]||{},a=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[a]||{},a++),"object"==typeof s||Z.isFunction(s)||(s={}),a===l&&(s=this,a--);a<l;a++)if(null!=(t=arguments[a]))for(e in t)n=s[e],i=t[e],s!==i&&(c&&i&&(Z.isPlainObject(i)||(o=Z.isArray(i)))?(o?(o=!1,r=n&&Z.isArray(n)?n:[]):r=n&&Z.isPlainObject(n)?n:{},s[e]=Z.extend(c,r,i)):void 0!==i&&(s[e]=i));return s},Z.extend({expando:"jQuery"+(K+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===Z.type(t)},isArray:Array.isArray,isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){return!Z.isArray(t)&&t-parseFloat(t)+1>=0},isPlainObject:function(t){return"object"===Z.type(t)&&!t.nodeType&&!Z.isWindow(t)&&!(t.constructor&&!G.call(t.constructor.prototype,"isPrototypeOf"))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?X[Q.call(t)]||"object":typeof t},globalEval:function(t){var e,n=eval;t=Z.trim(t),t&&(1===t.indexOf("use strict")?(e=J.createElement("script"),e.text=t,J.head.appendChild(e).parentNode.removeChild(e)):n(t))},camelCase:function(t){return t.replace(et,"ms-").replace(nt,it)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e,i){var o,r=0,s=t.length,a=n(t);if(i){if(a)for(;r<s&&(o=e.apply(t[r],i),o!==!1);r++);else for(r in t)if(o=e.apply(t[r],i),o===!1)break}else if(a)for(;r<s&&(o=e.call(t[r],r,t[r]),o!==!1);r++);else for(r in t)if(o=e.call(t[r],r,t[r]),o===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(tt,"")},makeArray:function(t,e){var i=e||[];return null!=t&&(n(Object(t))?Z.merge(i,"string"==typeof t?[t]:t):V.call(i,t)),i},inArray:function(t,e,n){return null==e?-1:z.call(e,t,n)},merge:function(t,e){for(var n=+e.length,i=0,o=t.length;i<n;i++)t[o++]=e[i];return t.length=o,t},grep:function(t,e,n){for(var i,o=[],r=0,s=t.length,a=!n;r<s;r++)i=!e(t[r],r),i!==a&&o.push(t[r]);return o},map:function(t,e,i){var o,r=0,s=t.length,a=n(t),l=[];if(a)for(;r<s;r++)o=e(t[r],r,i),null!=o&&l.push(o);else for(r in t)o=e(t[r],r,i),null!=o&&l.push(o);return U.apply([],l)},guid:1,proxy:function(t,e){var n,i,o;if("string"==typeof e&&(n=t[e],e=t,t=n),Z.isFunction(t))return i=B.call(arguments,2),o=function(){return t.apply(e||this,i.concat(B.call(arguments)))},o.guid=t.guid=t.guid||Z.guid++,o},now:Date.now,support:Y}),Z.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(t,e){X["[object "+e+"]"]=e.toLowerCase()});var ot=function(t){function e(t,e,n,i){var o,r,s,a,l,c,f,d,h,g;if((e?e.ownerDocument||e:M)!==O&&j(e),e=e||O,n=n||[],a=e.nodeType,"string"!=typeof t||!t||1!==a&&9!==a&&11!==a)return n;if(!i&&L){if(11!==a&&(o=yt.exec(t)))if(s=o[1]){if(9===a){if(r=e.getElementById(s),!r||!r.parentNode)return n;if(r.id===s)return n.push(r),n}else if(e.ownerDocument&&(r=e.ownerDocument.getElementById(s))&&H(e,r)&&r.id===s)return n.push(r),n}else{if(o[2])return K.apply(n,e.getElementsByTagName(t)),n;if((s=o[3])&&w.getElementsByClassName)return K.apply(n,e.getElementsByClassName(s)),n}if(w.qsa&&(!R||!R.test(t))){if(d=f=F,h=e,g=1!==a&&t,1===a&&"object"!==e.nodeName.toLowerCase()){for(c=$(t),(f=e.getAttribute("id"))?d=f.replace(xt,"\\$&"):e.setAttribute("id",d),d="[id='"+d+"'] ",l=c.length;l--;)c[l]=d+p(c[l]);h=bt.test(t)&&u(e.parentNode)||e,g=c.join(",")}if(g)try{return K.apply(n,h.querySelectorAll(g)),n}catch(m){}finally{f||e.removeAttribute("id")}}}return S(t.replace(lt,"$1"),e,n,i)}function n(){function t(n,i){return e.push(n+" ")>T.cacheLength&&delete t[e.shift()],t[n+" "]=i}var e=[];return t}function i(t){return t[F]=!0,t}function o(t){var e=O.createElement("div");try{return!!t(e)}catch(n){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function r(t,e){for(var n=t.split("|"),i=t.length;i--;)T.attrHandle[n[i]]=e}function s(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||X)-(~t.sourceIndex||X);if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function a(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function l(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function c(t){return i(function(e){return e=+e,i(function(n,i){for(var o,r=t([],n.length,e),s=r.length;s--;)n[o=r[s]]&&(n[o]=!(i[o]=n[o]))})})}function u(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function f(){}function p(t){for(var e=0,n=t.length,i="";e<n;e++)i+=t[e].value;return i}function d(t,e,n){var i=e.dir,o=n&&"parentNode"===i,r=_++;return e.first?function(e,n,r){for(;e=e[i];)if(1===e.nodeType||o)return t(e,n,r)}:function(e,n,s){var a,l,c=[W,r];if(s){for(;e=e[i];)if((1===e.nodeType||o)&&t(e,n,s))return!0}else for(;e=e[i];)if(1===e.nodeType||o){if(l=e[F]||(e[F]={}),(a=l[i])&&a[0]===W&&a[1]===r)return c[2]=a[2];if(l[i]=c,c[2]=t(e,n,s))return!0}}}function h(t){return t.length>1?function(e,n,i){for(var o=t.length;o--;)if(!t[o](e,n,i))return!1;return!0}:t[0]}function g(t,n,i){for(var o=0,r=n.length;o<r;o++)e(t,n[o],i);return i}function m(t,e,n,i,o){for(var r,s=[],a=0,l=t.length,c=null!=e;a<l;a++)(r=t[a])&&(n&&!n(r,i,o)||(s.push(r),c&&e.push(a)));return s}function v(t,e,n,o,r,s){return o&&!o[F]&&(o=v(o)),r&&!r[F]&&(r=v(r,s)),i(function(i,s,a,l){var c,u,f,p=[],d=[],h=s.length,v=i||g(e||"*",a.nodeType?[a]:a,[]),y=!t||!i&&e?v:m(v,p,t,a,l),b=n?r||(i?t:h||o)?[]:s:y;if(n&&n(y,b,a,l),o)for(c=m(b,d),o(c,[],a,l),u=c.length;u--;)(f=c[u])&&(b[d[u]]=!(y[d[u]]=f));if(i){if(r||t){if(r){for(c=[],u=b.length;u--;)(f=b[u])&&c.push(y[u]=f);r(null,b=[],c,l)}for(u=b.length;u--;)(f=b[u])&&(c=r?tt(i,f):p[u])>-1&&(i[c]=!(s[c]=f))}}else b=m(b===s?b.splice(h,b.length):b),r?r(null,s,b,l):K.apply(s,b)})}function y(t){for(var e,n,i,o=t.length,r=T.relative[t[0].type],s=r||T.relative[" "],a=r?1:0,l=d(function(t){return t===e},s,!0),c=d(function(t){return tt(e,t)>-1},s,!0),u=[function(t,n,i){var o=!r&&(i||n!==N)||((e=n).nodeType?l(t,n,i):c(t,n,i));return e=null,o}];a<o;a++)if(n=T.relative[t[a].type])u=[d(h(u),n)];else{if(n=T.filter[t[a].type].apply(null,t[a].matches),n[F]){for(i=++a;i<o&&!T.relative[t[i].type];i++);return v(a>1&&h(u),a>1&&p(t.slice(0,a-1).concat({value:" "===t[a-2].type?"*":""})).replace(lt,"$1"),n,a<i&&y(t.slice(a,i)),i<o&&y(t=t.slice(i)),i<o&&p(t))}u.push(n)}return h(u)}function b(t,n){var o=n.length>0,r=t.length>0,s=function(i,s,a,l,c){var u,f,p,d=0,h="0",g=i&&[],v=[],y=N,b=i||r&&T.find.TAG("*",c),x=W+=null==y?1:Math.random()||.1,w=b.length;for(c&&(N=s!==O&&s);h!==w&&null!=(u=b[h]);h++){if(r&&u){for(f=0;p=t[f++];)if(p(u,s,a)){l.push(u);break}c&&(W=x)}o&&((u=!p&&u)&&d--,i&&g.push(u))}if(d+=h,o&&h!==d){for(f=0;p=n[f++];)p(g,v,s,a);if(i){if(d>0)for(;h--;)g[h]||v[h]||(v[h]=Y.call(l));v=m(v)}K.apply(l,v),c&&!i&&v.length>0&&d+n.length>1&&e.uniqueSort(l)}return c&&(W=x,N=y),g};return o?i(s):s}var x,w,T,C,E,$,k,S,N,D,A,j,O,I,L,R,P,q,H,F="sizzle"+1*new Date,M=t.document,W=0,_=0,B=n(),U=n(),V=n(),z=function(t,e){return t===e&&(A=!0),0},X=1<<31,Q={}.hasOwnProperty,G=[],Y=G.pop,J=G.push,K=G.push,Z=G.slice,tt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n;return-1},et="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",it="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot=it.replace("w","w#"),rt="\\["+nt+"*("+it+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ot+"))|)"+nt+"*\\]",st=":("+it+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+rt+")*)|.*)\\)|)",at=new RegExp(nt+"+","g"),lt=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),ct=new RegExp("^"+nt+"*,"+nt+"*"),ut=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),ft=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),pt=new RegExp(st),dt=new RegExp("^"+ot+"$"),ht={ID:new RegExp("^#("+it+")"),CLASS:new RegExp("^\\.("+it+")"),TAG:new RegExp("^("+it.replace("w","w*")+")"),ATTR:new RegExp("^"+rt),PSEUDO:new RegExp("^"+st),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},gt=/^(?:input|select|textarea|button)$/i,mt=/^h\d$/i,vt=/^[^{]+\{\s*\[native \w/,yt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,bt=/[+~]/,xt=/'|\\/g,wt=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),Tt=function(t,e,n){var i="0x"+e-65536;return i!==i||n?e:i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)},Ct=function(){j()};try{K.apply(G=Z.call(M.childNodes),M.childNodes),G[M.childNodes.length].nodeType}catch(Et){K={apply:G.length?function(t,e){J.apply(t,Z.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}w=e.support={},E=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},j=e.setDocument=function(t){var e,n,i=t?t.ownerDocument||t:M;return i!==O&&9===i.nodeType&&i.documentElement?(O=i,I=i.documentElement,n=i.defaultView,n&&n!==n.top&&(n.addEventListener?n.addEventListener("unload",Ct,!1):n.attachEvent&&n.attachEvent("onunload",Ct)),L=!E(i),w.attributes=o(function(t){return t.className="i",!t.getAttribute("className")}),w.getElementsByTagName=o(function(t){return t.appendChild(i.createComment("")),!t.getElementsByTagName("*").length}),w.getElementsByClassName=vt.test(i.getElementsByClassName),w.getById=o(function(t){return I.appendChild(t).id=F,!i.getElementsByName||!i.getElementsByName(F).length}),w.getById?(T.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&L){var n=e.getElementById(t);return n&&n.parentNode?[n]:[]}},T.filter.ID=function(t){var e=t.replace(wt,Tt);return function(t){return t.getAttribute("id")===e}}):(delete T.find.ID,T.filter.ID=function(t){var e=t.replace(wt,Tt);return function(t){var n="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}}),T.find.TAG=w.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):w.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,i=[],o=0,r=e.getElementsByTagName(t);if("*"===t){for(;n=r[o++];)1===n.nodeType&&i.push(n);return i}return r},T.find.CLASS=w.getElementsByClassName&&function(t,e){if(L)return e.getElementsByClassName(t)},P=[],R=[],(w.qsa=vt.test(i.querySelectorAll))&&(o(function(t){I.appendChild(t).innerHTML="<a id='"+F+"'></a><select id='"+F+"-\f]' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+nt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||R.push("\\["+nt+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+F+"-]").length||R.push("~="),t.querySelectorAll(":checked").length||R.push(":checked"),t.querySelectorAll("a#"+F+"+*").length||R.push(".#.+[+~]")}),o(function(t){var e=i.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&R.push("name"+nt+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||R.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),R.push(",.*:")})),(w.matchesSelector=vt.test(q=I.matches||I.webkitMatchesSelector||I.mozMatchesSelector||I.oMatchesSelector||I.msMatchesSelector))&&o(function(t){w.disconnectedMatch=q.call(t,"div"),q.call(t,"[s!='']:x"),P.push("!=",st)}),R=R.length&&new RegExp(R.join("|")),P=P.length&&new RegExp(P.join("|")),e=vt.test(I.compareDocumentPosition),H=e||vt.test(I.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},z=e?function(t,e){if(t===e)return A=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n?n:(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!w.sortDetached&&e.compareDocumentPosition(t)===n?t===i||t.ownerDocument===M&&H(M,t)?-1:e===i||e.ownerDocument===M&&H(M,e)?1:D?tt(D,t)-tt(D,e):0:4&n?-1:1)}:function(t,e){if(t===e)return A=!0,0;var n,o=0,r=t.parentNode,a=e.parentNode,l=[t],c=[e];if(!r||!a)return t===i?-1:e===i?1:r?-1:a?1:D?tt(D,t)-tt(D,e):0;if(r===a)return s(t,e);for(n=t;n=n.parentNode;)l.unshift(n);for(n=e;n=n.parentNode;)c.unshift(n);for(;l[o]===c[o];)o++;return o?s(l[o],c[o]):l[o]===M?-1:c[o]===M?1:0},i):O},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==O&&j(t),n=n.replace(ft,"='$1']"),w.matchesSelector&&L&&(!P||!P.test(n))&&(!R||!R.test(n)))try{var i=q.call(t,n);if(i||w.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(o){}return e(n,O,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==O&&j(t),H(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==O&&j(t);var n=T.attrHandle[e.toLowerCase()],i=n&&Q.call(T.attrHandle,e.toLowerCase())?n(t,e,!L):void 0;return void 0!==i?i:w.attributes||!L?t.getAttribute(e):(i=t.getAttributeNode(e))&&i.specified?i.value:null},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],i=0,o=0;if(A=!w.detectDuplicates,D=!w.sortStable&&t.slice(0),t.sort(z),A){for(;e=t[o++];)e===t[o]&&(i=n.push(o));for(;i--;)t.splice(n[i],1)}return D=null,t},C=e.getText=function(t){var e,n="",i=0,o=t.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=C(t)}else if(3===o||4===o)return t.nodeValue}else for(;e=t[i++];)n+=C(e);return n},T=e.selectors={cacheLength:50,createPseudo:i,match:ht,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(wt,Tt),t[3]=(t[3]||t[4]||t[5]||"").replace(wt,Tt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return ht.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&pt.test(n)&&(e=$(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(wt,Tt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+nt+")"+t+"("+nt+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,i){return function(o){var r=e.attr(o,t);return null==r?"!="===n:!n||(r+="","="===n?r===i:"!="===n?r!==i:"^="===n?i&&0===r.indexOf(i):"*="===n?i&&r.indexOf(i)>-1:"$="===n?i&&r.slice(-i.length)===i:"~="===n?(" "+r.replace(at," ")+" ").indexOf(i)>-1:"|="===n&&(r===i||r.slice(0,i.length+1)===i+"-"))}},CHILD:function(t,e,n,i,o){var r="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===o?function(t){return!!t.parentNode}:function(e,n,l){var c,u,f,p,d,h,g=r!==s?"nextSibling":"previousSibling",m=e.parentNode,v=a&&e.nodeName.toLowerCase(),y=!l&&!a;if(m){if(r){for(;g;){for(f=e;f=f[g];)if(a?f.nodeName.toLowerCase()===v:1===f.nodeType)return!1;h=g="only"===t&&!h&&"nextSibling"}return!0}if(h=[s?m.firstChild:m.lastChild],s&&y){for(u=m[F]||(m[F]={}),c=u[t]||[],d=c[0]===W&&c[1],p=c[0]===W&&c[2],f=d&&m.childNodes[d];f=++d&&f&&f[g]||(p=d=0)||h.pop();)if(1===f.nodeType&&++p&&f===e){u[t]=[W,d,p];break}}else if(y&&(c=(e[F]||(e[F]={}))[t])&&c[0]===W)p=c[1];else for(;(f=++d&&f&&f[g]||(p=d=0)||h.pop())&&((a?f.nodeName.toLowerCase()!==v:1!==f.nodeType)||!++p||(y&&((f[F]||(f[F]={}))[t]=[W,p]),f!==e)););return p-=o,p===i||p%i===0&&p/i>=0}}},PSEUDO:function(t,n){var o,r=T.pseudos[t]||T.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return r[F]?r(n):r.length>1?(o=[t,t,"",n],T.setFilters.hasOwnProperty(t.toLowerCase())?i(function(t,e){for(var i,o=r(t,n),s=o.length;s--;)i=tt(t,o[s]),t[i]=!(e[i]=o[s])}):function(t){return r(t,0,o)}):r}},pseudos:{not:i(function(t){var e=[],n=[],o=k(t.replace(lt,"$1"));return o[F]?i(function(t,e,n,i){for(var r,s=o(t,null,i,[]),a=t.length;a--;)(r=s[a])&&(t[a]=!(e[a]=r))}):function(t,i,r){return e[0]=t,o(e,null,r,n),e[0]=null,!n.pop()}}),has:i(function(t){return function(n){return e(t,n).length>0}}),contains:i(function(t){return t=t.replace(wt,Tt),function(e){return(e.textContent||e.innerText||C(e)).indexOf(t)>-1}}),lang:i(function(t){return dt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(wt,Tt).toLowerCase(),function(e){var n;do if(n=L?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===I},focus:function(t){return t===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:function(t){return t.disabled===!1},disabled:function(t){return t.disabled===!0},checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!T.pseudos.empty(t)},header:function(t){return mt.test(t.nodeName)},input:function(t){return gt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:c(function(){return[0]}),last:c(function(t,e){return[e-1]}),eq:c(function(t,e,n){return[n<0?n+e:n]}),even:c(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:c(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:c(function(t,e,n){for(var i=n<0?n+e:n;--i>=0;)t.push(i);return t}),gt:c(function(t,e,n){for(var i=n<0?n+e:n;++i<e;)t.push(i);return t})}},T.pseudos.nth=T.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[x]=a(x);for(x in{submit:!0,reset:!0})T.pseudos[x]=l(x);return f.prototype=T.filters=T.pseudos,T.setFilters=new f,$=e.tokenize=function(t,n){var i,o,r,s,a,l,c,u=U[t+" "];if(u)return n?0:u.slice(0);for(a=t,l=[],c=T.preFilter;a;){i&&!(o=ct.exec(a))||(o&&(a=a.slice(o[0].length)||a),l.push(r=[])),i=!1,(o=ut.exec(a))&&(i=o.shift(),r.push({value:i,type:o[0].replace(lt," ")}),a=a.slice(i.length));for(s in T.filter)!(o=ht[s].exec(a))||c[s]&&!(o=c[s](o))||(i=o.shift(),r.push({value:i,type:s,matches:o}),a=a.slice(i.length));if(!i)break}return n?a.length:a?e.error(t):U(t,l).slice(0)},k=e.compile=function(t,e){var n,i=[],o=[],r=V[t+" "];if(!r){for(e||(e=$(t)),n=e.length;n--;)r=y(e[n]),r[F]?i.push(r):o.push(r);r=V(t,b(o,i)),r.selector=t}return r},S=e.select=function(t,e,n,i){var o,r,s,a,l,c="function"==typeof t&&t,f=!i&&$(t=c.selector||t);if(n=n||[],1===f.length){if(r=f[0]=f[0].slice(0),r.length>2&&"ID"===(s=r[0]).type&&w.getById&&9===e.nodeType&&L&&T.relative[r[1].type]){if(e=(T.find.ID(s.matches[0].replace(wt,Tt),e)||[])[0],!e)return n;c&&(e=e.parentNode),t=t.slice(r.shift().value.length)}for(o=ht.needsContext.test(t)?0:r.length;o--&&(s=r[o],!T.relative[a=s.type]);)if((l=T.find[a])&&(i=l(s.matches[0].replace(wt,Tt),bt.test(r[0].type)&&u(e.parentNode)||e))){if(r.splice(o,1),t=i.length&&p(r),!t)return K.apply(n,i),n;break}}return(c||k(t,f))(i,e,!L,n,bt.test(t)&&u(e.parentNode)||e),n},w.sortStable=F.split("").sort(z).join("")===F,w.detectDuplicates=!!A,j(),w.sortDetached=o(function(t){return 1&t.compareDocumentPosition(O.createElement("div"))}),o(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||r("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),w.attributes&&o(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||r("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),o(function(t){return null==t.getAttribute("disabled")})||r(et,function(t,e,n){var i;if(!n)return t[e]===!0?e.toLowerCase():(i=t.getAttributeNode(e))&&i.specified?i.value:null}),e}(t);Z.find=ot,Z.expr=ot.selectors,Z.expr[":"]=Z.expr.pseudos,Z.unique=ot.uniqueSort,Z.text=ot.getText,Z.isXMLDoc=ot.isXML,Z.contains=ot.contains;var rt=Z.expr.match.needsContext,st=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,at=/^.[^:#\[\.,]*$/;Z.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?Z.find.matchesSelector(i,t)?[i]:[]:Z.find.matches(t,Z.grep(e,function(t){return 1===t.nodeType}))},Z.fn.extend({find:function(t){var e,n=this.length,i=[],o=this;if("string"!=typeof t)return this.pushStack(Z(t).filter(function(){
 for(e=0;e<n;e++)if(Z.contains(o[e],this))return!0}));for(e=0;e<n;e++)Z.find(t,o[e],i);return i=this.pushStack(n>1?Z.unique(i):i),i.selector=this.selector?this.selector+" "+t:t,i},filter:function(t){return this.pushStack(i(this,t||[],!1))},not:function(t){return this.pushStack(i(this,t||[],!0))},is:function(t){return!!i(this,"string"==typeof t&&rt.test(t)?Z(t):t||[],!1).length}});var lt,ct=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ut=Z.fn.init=function(t,e){var n,i;if(!t)return this;if("string"==typeof t){if(n="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:ct.exec(t),!n||!n[1]&&e)return!e||e.jquery?(e||lt).find(t):this.constructor(e).find(t);if(n[1]){if(e=e instanceof Z?e[0]:e,Z.merge(this,Z.parseHTML(n[1],e&&e.nodeType?e.ownerDocument||e:J,!0)),st.test(n[1])&&Z.isPlainObject(e))for(n in e)Z.isFunction(this[n])?this[n](e[n]):this.attr(n,e[n]);return this}return i=J.getElementById(n[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=J,this.selector=t,this}return t.nodeType?(this.context=this[0]=t,this.length=1,this):Z.isFunction(t)?"undefined"!=typeof lt.ready?lt.ready(t):t(Z):(void 0!==t.selector&&(this.selector=t.selector,this.context=t.context),Z.makeArray(t,this))};ut.prototype=Z.fn,lt=Z(J);var ft=/^(?:parents|prev(?:Until|All))/,pt={children:!0,contents:!0,next:!0,prev:!0};Z.extend({dir:function(t,e,n){for(var i=[],o=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&Z(t).is(n))break;i.push(t)}return i},sibling:function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n}}),Z.fn.extend({has:function(t){var e=Z(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(Z.contains(this,e[t]))return!0})},closest:function(t,e){for(var n,i=0,o=this.length,r=[],s=rt.test(t)||"string"!=typeof t?Z(t,e||this.context):0;i<o;i++)for(n=this[i];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(s?s.index(n)>-1:1===n.nodeType&&Z.find.matchesSelector(n,t))){r.push(n);break}return this.pushStack(r.length>1?Z.unique(r):r)},index:function(t){return t?"string"==typeof t?z.call(Z(t),this[0]):z.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(Z.unique(Z.merge(this.get(),Z(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),Z.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return Z.dir(t,"parentNode")},parentsUntil:function(t,e,n){return Z.dir(t,"parentNode",n)},next:function(t){return o(t,"nextSibling")},prev:function(t){return o(t,"previousSibling")},nextAll:function(t){return Z.dir(t,"nextSibling")},prevAll:function(t){return Z.dir(t,"previousSibling")},nextUntil:function(t,e,n){return Z.dir(t,"nextSibling",n)},prevUntil:function(t,e,n){return Z.dir(t,"previousSibling",n)},siblings:function(t){return Z.sibling((t.parentNode||{}).firstChild,t)},children:function(t){return Z.sibling(t.firstChild)},contents:function(t){return t.contentDocument||Z.merge([],t.childNodes)}},function(t,e){Z.fn[t]=function(n,i){var o=Z.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=Z.filter(i,o)),this.length>1&&(pt[t]||Z.unique(o),ft.test(t)&&o.reverse()),this.pushStack(o)}});var dt=/\S+/g,ht={};Z.Callbacks=function(t){t="string"==typeof t?ht[t]||r(t):Z.extend({},t);var e,n,i,o,s,a,l=[],c=!t.once&&[],u=function(r){for(e=t.memory&&r,n=!0,a=o||0,o=0,s=l.length,i=!0;l&&a<s;a++)if(l[a].apply(r[0],r[1])===!1&&t.stopOnFalse){e=!1;break}i=!1,l&&(c?c.length&&u(c.shift()):e?l=[]:f.disable())},f={add:function(){if(l){var n=l.length;!function r(e){Z.each(e,function(e,n){var i=Z.type(n);"function"===i?t.unique&&f.has(n)||l.push(n):n&&n.length&&"string"!==i&&r(n)})}(arguments),i?s=l.length:e&&(o=n,u(e))}return this},remove:function(){return l&&Z.each(arguments,function(t,e){for(var n;(n=Z.inArray(e,l,n))>-1;)l.splice(n,1),i&&(n<=s&&s--,n<=a&&a--)}),this},has:function(t){return t?Z.inArray(t,l)>-1:!(!l||!l.length)},empty:function(){return l=[],s=0,this},disable:function(){return l=c=e=void 0,this},disabled:function(){return!l},lock:function(){return c=void 0,e||f.disable(),this},locked:function(){return!c},fireWith:function(t,e){return!l||n&&!c||(e=e||[],e=[t,e.slice?e.slice():e],i?c.push(e):u(e)),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!n}};return f},Z.extend({Deferred:function(t){var e=[["resolve","done",Z.Callbacks("once memory"),"resolved"],["reject","fail",Z.Callbacks("once memory"),"rejected"],["notify","progress",Z.Callbacks("memory")]],n="pending",i={state:function(){return n},always:function(){return o.done(arguments).fail(arguments),this},then:function(){var t=arguments;return Z.Deferred(function(n){Z.each(e,function(e,r){var s=Z.isFunction(t[e])&&t[e];o[r[1]](function(){var t=s&&s.apply(this,arguments);t&&Z.isFunction(t.promise)?t.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[r[0]+"With"](this===i?n.promise():this,s?[t]:arguments)})}),t=null}).promise()},promise:function(t){return null!=t?Z.extend(t,i):i}},o={};return i.pipe=i.then,Z.each(e,function(t,r){var s=r[2],a=r[3];i[r[1]]=s.add,a&&s.add(function(){n=a},e[1^t][2].disable,e[2][2].lock),o[r[0]]=function(){return o[r[0]+"With"](this===o?i:this,arguments),this},o[r[0]+"With"]=s.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(t){var e,n,i,o=0,r=B.call(arguments),s=r.length,a=1!==s||t&&Z.isFunction(t.promise)?s:0,l=1===a?t:Z.Deferred(),c=function(t,n,i){return function(o){n[t]=this,i[t]=arguments.length>1?B.call(arguments):o,i===e?l.notifyWith(n,i):--a||l.resolveWith(n,i)}};if(s>1)for(e=new Array(s),n=new Array(s),i=new Array(s);o<s;o++)r[o]&&Z.isFunction(r[o].promise)?r[o].promise().done(c(o,i,r)).fail(l.reject).progress(c(o,n,e)):--a;return a||l.resolveWith(i,r),l.promise()}});var gt;Z.fn.ready=function(t){return Z.ready.promise().done(t),this},Z.extend({isReady:!1,readyWait:1,holdReady:function(t){t?Z.readyWait++:Z.ready(!0)},ready:function(t){(t===!0?--Z.readyWait:Z.isReady)||(Z.isReady=!0,t!==!0&&--Z.readyWait>0||(gt.resolveWith(J,[Z]),Z.fn.triggerHandler&&(Z(J).triggerHandler("ready"),Z(J).off("ready"))))}}),Z.ready.promise=function(e){return gt||(gt=Z.Deferred(),"complete"===J.readyState?setTimeout(Z.ready):(J.addEventListener("DOMContentLoaded",s,!1),t.addEventListener("load",s,!1))),gt.promise(e)},Z.ready.promise();var mt=Z.access=function(t,e,n,i,o,r,s){var a=0,l=t.length,c=null==n;if("object"===Z.type(n)){o=!0;for(a in n)Z.access(t,e,a,n[a],!0,r,s)}else if(void 0!==i&&(o=!0,Z.isFunction(i)||(s=!0),c&&(s?(e.call(t,i),e=null):(c=e,e=function(t,e,n){return c.call(Z(t),n)})),e))for(;a<l;a++)e(t[a],n,s?i:i.call(t[a],a,e(t[a],n)));return o?t:c?e.call(t):l?e(t[0],n):r};Z.acceptData=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType},a.uid=1,a.accepts=Z.acceptData,a.prototype={key:function(t){if(!a.accepts(t))return 0;var e={},n=t[this.expando];if(!n){n=a.uid++;try{e[this.expando]={value:n},Object.defineProperties(t,e)}catch(i){e[this.expando]=n,Z.extend(t,e)}}return this.cache[n]||(this.cache[n]={}),n},set:function(t,e,n){var i,o=this.key(t),r=this.cache[o];if("string"==typeof e)r[e]=n;else if(Z.isEmptyObject(r))Z.extend(this.cache[o],e);else for(i in e)r[i]=e[i];return r},get:function(t,e){var n=this.cache[this.key(t)];return void 0===e?n:n[e]},access:function(t,e,n){var i;return void 0===e||e&&"string"==typeof e&&void 0===n?(i=this.get(t,e),void 0!==i?i:this.get(t,Z.camelCase(e))):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,i,o,r=this.key(t),s=this.cache[r];if(void 0===e)this.cache[r]={};else{Z.isArray(e)?i=e.concat(e.map(Z.camelCase)):(o=Z.camelCase(e),e in s?i=[e,o]:(i=o,i=i in s?[i]:i.match(dt)||[])),n=i.length;for(;n--;)delete s[i[n]]}},hasData:function(t){return!Z.isEmptyObject(this.cache[t[this.expando]]||{})},discard:function(t){t[this.expando]&&delete this.cache[t[this.expando]]}};var vt=new a,yt=new a,bt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,xt=/([A-Z])/g;Z.extend({hasData:function(t){return yt.hasData(t)||vt.hasData(t)},data:function(t,e,n){return yt.access(t,e,n)},removeData:function(t,e){yt.remove(t,e)},_data:function(t,e,n){return vt.access(t,e,n)},_removeData:function(t,e){vt.remove(t,e)}}),Z.fn.extend({data:function(t,e){var n,i,o,r=this[0],s=r&&r.attributes;if(void 0===t){if(this.length&&(o=yt.get(r),1===r.nodeType&&!vt.get(r,"hasDataAttrs"))){for(n=s.length;n--;)s[n]&&(i=s[n].name,0===i.indexOf("data-")&&(i=Z.camelCase(i.slice(5)),l(r,i,o[i])));vt.set(r,"hasDataAttrs",!0)}return o}return"object"==typeof t?this.each(function(){yt.set(this,t)}):mt(this,function(e){var n,i=Z.camelCase(t);if(r&&void 0===e){if(n=yt.get(r,t),void 0!==n)return n;if(n=yt.get(r,i),void 0!==n)return n;if(n=l(r,i,void 0),void 0!==n)return n}else this.each(function(){var n=yt.get(this,i);yt.set(this,i,e),t.indexOf("-")!==-1&&void 0!==n&&yt.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){yt.remove(this,t)})}}),Z.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=vt.get(t,e),n&&(!i||Z.isArray(n)?i=vt.access(t,e,Z.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=Z.queue(t,e),i=n.length,o=n.shift(),r=Z._queueHooks(t,e),s=function(){Z.dequeue(t,e)};"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===e&&n.unshift("inprogress"),delete r.stop,o.call(t,s,r)),!i&&r&&r.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return vt.get(t,n)||vt.access(t,n,{empty:Z.Callbacks("once memory").add(function(){vt.remove(t,[e+"queue",n])})})}}),Z.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?Z.queue(this[0],t):void 0===e?this:this.each(function(){var n=Z.queue(this,t,e);Z._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&Z.dequeue(this,t)})},dequeue:function(t){return this.each(function(){Z.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,i=1,o=Z.Deferred(),r=this,s=this.length,a=function(){--i||o.resolveWith(r,[r])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";s--;)n=vt.get(r[s],t+"queueHooks"),n&&n.empty&&(i++,n.empty.add(a));return a(),o.promise(e)}});var wt=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Tt=["Top","Right","Bottom","Left"],Ct=function(t,e){return t=e||t,"none"===Z.css(t,"display")||!Z.contains(t.ownerDocument,t)},Et=/^(?:checkbox|radio)$/i;!function(){var t=J.createDocumentFragment(),e=t.appendChild(J.createElement("div")),n=J.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),Y.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",Y.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var $t="undefined";Y.focusinBubbles="onfocusin"in t;var kt=/^key/,St=/^(?:mouse|pointer|contextmenu)|click/,Nt=/^(?:focusinfocus|focusoutblur)$/,Dt=/^([^.]*)(?:\.(.+)|)$/;Z.event={global:{},add:function(t,e,n,i,o){var r,s,a,l,c,u,f,p,d,h,g,m=vt.get(t);if(m)for(n.handler&&(r=n,n=r.handler,o=r.selector),n.guid||(n.guid=Z.guid++),(l=m.events)||(l=m.events={}),(s=m.handle)||(s=m.handle=function(e){return typeof Z!==$t&&Z.event.triggered!==e.type?Z.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(dt)||[""],c=e.length;c--;)a=Dt.exec(e[c])||[],d=g=a[1],h=(a[2]||"").split(".").sort(),d&&(f=Z.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=Z.event.special[d]||{},u=Z.extend({type:d,origType:g,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&Z.expr.match.needsContext.test(o),namespace:h.join(".")},r),(p=l[d])||(p=l[d]=[],p.delegateCount=0,f.setup&&f.setup.call(t,i,h,s)!==!1||t.addEventListener&&t.addEventListener(d,s,!1)),f.add&&(f.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,u):p.push(u),Z.event.global[d]=!0)},remove:function(t,e,n,i,o){var r,s,a,l,c,u,f,p,d,h,g,m=vt.hasData(t)&&vt.get(t);if(m&&(l=m.events)){for(e=(e||"").match(dt)||[""],c=e.length;c--;)if(a=Dt.exec(e[c])||[],d=g=a[1],h=(a[2]||"").split(".").sort(),d){for(f=Z.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,p=l[d]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=r=p.length;r--;)u=p[r],!o&&g!==u.origType||n&&n.guid!==u.guid||a&&!a.test(u.namespace)||i&&i!==u.selector&&("**"!==i||!u.selector)||(p.splice(r,1),u.selector&&p.delegateCount--,f.remove&&f.remove.call(t,u));s&&!p.length&&(f.teardown&&f.teardown.call(t,h,m.handle)!==!1||Z.removeEvent(t,d,m.handle),delete l[d])}else for(d in l)Z.event.remove(t,d+e[c],n,i,!0);Z.isEmptyObject(l)&&(delete m.handle,vt.remove(t,"events"))}},trigger:function(e,n,i,o){var r,s,a,l,c,u,f,p=[i||J],d=G.call(e,"type")?e.type:e,h=G.call(e,"namespace")?e.namespace.split("."):[];if(s=a=i=i||J,3!==i.nodeType&&8!==i.nodeType&&!Nt.test(d+Z.event.triggered)&&(d.indexOf(".")>=0&&(h=d.split("."),d=h.shift(),h.sort()),c=d.indexOf(":")<0&&"on"+d,e=e[Z.expando]?e:new Z.Event(d,"object"==typeof e&&e),e.isTrigger=o?2:3,e.namespace=h.join("."),e.namespace_re=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=i),n=null==n?[e]:Z.makeArray(n,[e]),f=Z.event.special[d]||{},o||!f.trigger||f.trigger.apply(i,n)!==!1)){if(!o&&!f.noBubble&&!Z.isWindow(i)){for(l=f.delegateType||d,Nt.test(l+d)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(i.ownerDocument||J)&&p.push(a.defaultView||a.parentWindow||t)}for(r=0;(s=p[r++])&&!e.isPropagationStopped();)e.type=r>1?l:f.bindType||d,u=(vt.get(s,"events")||{})[e.type]&&vt.get(s,"handle"),u&&u.apply(s,n),u=c&&s[c],u&&u.apply&&Z.acceptData(s)&&(e.result=u.apply(s,n),e.result===!1&&e.preventDefault());return e.type=d,o||e.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!Z.acceptData(i)||c&&Z.isFunction(i[d])&&!Z.isWindow(i)&&(a=i[c],a&&(i[c]=null),Z.event.triggered=d,i[d](),Z.event.triggered=void 0,a&&(i[c]=a)),e.result}},dispatch:function(t){t=Z.event.fix(t);var e,n,i,o,r,s=[],a=B.call(arguments),l=(vt.get(this,"events")||{})[t.type]||[],c=Z.event.special[t.type]||{};if(a[0]=t,t.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,t)!==!1){for(s=Z.event.handlers.call(this,t,l),e=0;(o=s[e++])&&!t.isPropagationStopped();)for(t.currentTarget=o.elem,n=0;(r=o.handlers[n++])&&!t.isImmediatePropagationStopped();)t.namespace_re&&!t.namespace_re.test(r.namespace)||(t.handleObj=r,t.data=r.data,i=((Z.event.special[r.origType]||{}).handle||r.handler).apply(o.elem,a),void 0!==i&&(t.result=i)===!1&&(t.preventDefault(),t.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(t,e){var n,i,o,r,s=[],a=e.delegateCount,l=t.target;if(a&&l.nodeType&&(!t.button||"click"!==t.type))for(;l!==this;l=l.parentNode||this)if(l.disabled!==!0||"click"!==t.type){for(i=[],n=0;n<a;n++)r=e[n],o=r.selector+" ",void 0===i[o]&&(i[o]=r.needsContext?Z(o,this).index(l)>=0:Z.find(o,this,null,[l]).length),i[o]&&i.push(r);i.length&&s.push({elem:l,handlers:i})}return a<e.length&&s.push({elem:this,handlers:e.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(t,e){return null==t.which&&(t.which=null!=e.charCode?e.charCode:e.keyCode),t}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(t,e){var n,i,o,r=e.button;return null==t.pageX&&null!=e.clientX&&(n=t.target.ownerDocument||J,i=n.documentElement,o=n.body,t.pageX=e.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),t.pageY=e.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)),t.which||void 0===r||(t.which=1&r?1:2&r?3:4&r?2:0),t}},fix:function(t){if(t[Z.expando])return t;var e,n,i,o=t.type,r=t,s=this.fixHooks[o];for(s||(this.fixHooks[o]=s=St.test(o)?this.mouseHooks:kt.test(o)?this.keyHooks:{}),i=s.props?this.props.concat(s.props):this.props,t=new Z.Event(r),e=i.length;e--;)n=i[e],t[n]=r[n];return t.target||(t.target=J),3===t.target.nodeType&&(t.target=t.target.parentNode),s.filter?s.filter(t,r):t},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==f()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===f()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&Z.nodeName(this,"input"))return this.click(),!1},_default:function(t){return Z.nodeName(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}},simulate:function(t,e,n,i){var o=Z.extend(new Z.Event,n,{type:t,isSimulated:!0,originalEvent:{}});i?Z.event.trigger(o,null,e):Z.event.dispatch.call(e,o),o.isDefaultPrevented()&&n.preventDefault()}},Z.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n,!1)},Z.Event=function(t,e){return this instanceof Z.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?c:u):this.type=t,e&&Z.extend(this,e),this.timeStamp=t&&t.timeStamp||Z.now(),void(this[Z.expando]=!0)):new Z.Event(t,e)},Z.Event.prototype={isDefaultPrevented:u,isPropagationStopped:u,isImmediatePropagationStopped:u,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=c,t&&t.preventDefault&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=c,t&&t.stopPropagation&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=c,t&&t.stopImmediatePropagation&&t.stopImmediatePropagation(),this.stopPropagation()}},Z.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){Z.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,i=this,o=t.relatedTarget,r=t.handleObj;return o&&(o===i||Z.contains(i,o))||(t.type=r.origType,n=r.handler.apply(this,arguments),t.type=e),n}}}),Y.focusinBubbles||Z.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){Z.event.simulate(e,t.target,Z.event.fix(t),!0)};Z.event.special[e]={setup:function(){var i=this.ownerDocument||this,o=vt.access(i,e);o||i.addEventListener(t,n,!0),vt.access(i,e,(o||0)+1)},teardown:function(){var i=this.ownerDocument||this,o=vt.access(i,e)-1;o?vt.access(i,e,o):(i.removeEventListener(t,n,!0),vt.remove(i,e))}}}),Z.fn.extend({on:function(t,e,n,i,o){var r,s;if("object"==typeof t){"string"!=typeof e&&(n=n||e,e=void 0);for(s in t)this.on(s,e,n,t[s],o);return this}if(null==n&&null==i?(i=e,n=e=void 0):null==i&&("string"==typeof e?(i=n,n=void 0):(i=n,n=e,e=void 0)),i===!1)i=u;else if(!i)return this;return 1===o&&(r=i,i=function(t){return Z().off(t),r.apply(this,arguments)},i.guid=r.guid||(r.guid=Z.guid++)),this.each(function(){Z.event.add(this,t,i,n,e)})},one:function(t,e,n,i){return this.on(t,e,n,i,1)},off:function(t,e,n){var i,o;if(t&&t.preventDefault&&t.handleObj)return i=t.handleObj,Z(t.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof t){for(o in t)this.off(o,e,t[o]);return this}return e!==!1&&"function"!=typeof e||(n=e,e=void 0),n===!1&&(n=u),this.each(function(){Z.event.remove(this,t,n,e)})},trigger:function(t,e){return this.each(function(){Z.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return Z.event.trigger(t,e,n,!0)}});var At=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jt=/<([\w:]+)/,Ot=/<|&#?\w+;/,It=/<(?:script|style|link)/i,Lt=/checked\s*(?:[^=]|=\s*.checked.)/i,Rt=/^$|\/(?:java|ecma)script/i,Pt=/^true\/(.*)/,qt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Ht={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};Ht.optgroup=Ht.option,Ht.tbody=Ht.tfoot=Ht.colgroup=Ht.caption=Ht.thead,Ht.th=Ht.td,Z.extend({clone:function(t,e,n){var i,o,r,s,a=t.cloneNode(!0),l=Z.contains(t.ownerDocument,t);if(!(Y.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||Z.isXMLDoc(t)))for(s=v(a),r=v(t),i=0,o=r.length;i<o;i++)y(r[i],s[i]);if(e)if(n)for(r=r||v(t),s=s||v(a),i=0,o=r.length;i<o;i++)m(r[i],s[i]);else m(t,a);return s=v(a,"script"),s.length>0&&g(s,!l&&v(t,"script")),a},buildFragment:function(t,e,n,i){for(var o,r,s,a,l,c,u=e.createDocumentFragment(),f=[],p=0,d=t.length;p<d;p++)if(o=t[p],o||0===o)if("object"===Z.type(o))Z.merge(f,o.nodeType?[o]:o);else if(Ot.test(o)){for(r=r||u.appendChild(e.createElement("div")),s=(jt.exec(o)||["",""])[1].toLowerCase(),a=Ht[s]||Ht._default,r.innerHTML=a[1]+o.replace(At,"<$1></$2>")+a[2],c=a[0];c--;)r=r.lastChild;Z.merge(f,r.childNodes),r=u.firstChild,r.textContent=""}else f.push(e.createTextNode(o));for(u.textContent="",p=0;o=f[p++];)if((!i||Z.inArray(o,i)===-1)&&(l=Z.contains(o.ownerDocument,o),r=v(u.appendChild(o),"script"),l&&g(r),n))for(c=0;o=r[c++];)Rt.test(o.type||"")&&n.push(o);return u},cleanData:function(t){for(var e,n,i,o,r=Z.event.special,s=0;void 0!==(n=t[s]);s++){if(Z.acceptData(n)&&(o=n[vt.expando],o&&(e=vt.cache[o]))){if(e.events)for(i in e.events)r[i]?Z.event.remove(n,i):Z.removeEvent(n,i,e.handle);vt.cache[o]&&delete vt.cache[o]}delete yt.cache[n[yt.expando]]}}}),Z.fn.extend({text:function(t){return mt(this,function(t){return void 0===t?Z.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return this.domManip(arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=p(this,t);e.appendChild(t)}})},prepend:function(){return this.domManip(arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=p(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},remove:function(t,e){for(var n,i=t?Z.filter(t,this):this,o=0;null!=(n=i[o]);o++)e||1!==n.nodeType||Z.cleanData(v(n)),n.parentNode&&(e&&Z.contains(n.ownerDocument,n)&&g(v(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(Z.cleanData(v(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return Z.clone(this,t,e)})},html:function(t){return mt(this,function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!It.test(t)&&!Ht[(jt.exec(t)||["",""])[1].toLowerCase()]){t=t.replace(At,"<$1></$2>");try{for(;n<i;n++)e=this[n]||{},1===e.nodeType&&(Z.cleanData(v(e,!1)),e.innerHTML=t);e=0}catch(o){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=arguments[0];return this.domManip(arguments,function(e){t=this.parentNode,Z.cleanData(v(this)),t&&t.replaceChild(e,this)}),t&&(t.length||t.nodeType)?this:this.remove()},detach:function(t){return this.remove(t,!0)},domManip:function(t,e){t=U.apply([],t);var n,i,o,r,s,a,l=0,c=this.length,u=this,f=c-1,p=t[0],g=Z.isFunction(p);if(g||c>1&&"string"==typeof p&&!Y.checkClone&&Lt.test(p))return this.each(function(n){var i=u.eq(n);g&&(t[0]=p.call(this,n,i.html())),i.domManip(t,e)});if(c&&(n=Z.buildFragment(t,this[0].ownerDocument,!1,this),i=n.firstChild,1===n.childNodes.length&&(n=i),i)){for(o=Z.map(v(n,"script"),d),r=o.length;l<c;l++)s=n,l!==f&&(s=Z.clone(s,!0,!0),r&&Z.merge(o,v(s,"script"))),e.call(this[l],s,l);if(r)for(a=o[o.length-1].ownerDocument,Z.map(o,h),l=0;l<r;l++)s=o[l],Rt.test(s.type||"")&&!vt.access(s,"globalEval")&&Z.contains(a,s)&&(s.src?Z._evalUrl&&Z._evalUrl(s.src):Z.globalEval(s.textContent.replace(qt,"")))}return this}}),Z.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){Z.fn[t]=function(t){for(var n,i=[],o=Z(t),r=o.length-1,s=0;s<=r;s++)n=s===r?this:this.clone(!0),Z(o[s])[e](n),V.apply(i,n.get());return this.pushStack(i)}});var Ft,Mt={},Wt=/^margin/,_t=new RegExp("^("+wt+")(?!px)[a-z%]+$","i"),Bt=function(e){return e.ownerDocument.defaultView.opener?e.ownerDocument.defaultView.getComputedStyle(e,null):t.getComputedStyle(e,null)};!function(){function e(){s.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",s.innerHTML="",o.appendChild(r);var e=t.getComputedStyle(s,null);n="1%"!==e.top,i="4px"===e.width,o.removeChild(r)}var n,i,o=J.documentElement,r=J.createElement("div"),s=J.createElement("div");s.style&&(s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",Y.clearCloneStyle="content-box"===s.style.backgroundClip,r.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",r.appendChild(s),t.getComputedStyle&&Z.extend(Y,{pixelPosition:function(){return e(),n},boxSizingReliable:function(){return null==i&&e(),i},reliableMarginRight:function(){var e,n=s.appendChild(J.createElement("div"));return n.style.cssText=s.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",n.style.marginRight=n.style.width="0",s.style.width="1px",o.appendChild(r),e=!parseFloat(t.getComputedStyle(n,null).marginRight),o.removeChild(r),s.removeChild(n),e}}))}(),Z.swap=function(t,e,n,i){var o,r,s={};for(r in e)s[r]=t.style[r],t.style[r]=e[r];o=n.apply(t,i||[]);for(r in e)t.style[r]=s[r];return o};var Ut=/^(none|table(?!-c[ea]).+)/,Vt=new RegExp("^("+wt+")(.*)$","i"),zt=new RegExp("^([+-])=("+wt+")","i"),Xt={position:"absolute",visibility:"hidden",display:"block"},Qt={letterSpacing:"0",fontWeight:"400"},Gt=["Webkit","O","Moz","ms"];Z.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=w(t,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,r,s,a=Z.camelCase(e),l=t.style;return e=Z.cssProps[a]||(Z.cssProps[a]=C(l,a)),s=Z.cssHooks[e]||Z.cssHooks[a],void 0===n?s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:l[e]:(r=typeof n,"string"===r&&(o=zt.exec(n))&&(n=(o[1]+1)*o[2]+parseFloat(Z.css(t,e)),r="number"),null!=n&&n===n&&("number"!==r||Z.cssNumber[a]||(n+="px"),Y.clearCloneStyle||""!==n||0!==e.indexOf("background")||(l[e]="inherit"),s&&"set"in s&&void 0===(n=s.set(t,n,i))||(l[e]=n)),void 0)}},css:function(t,e,n,i){var o,r,s,a=Z.camelCase(e);return e=Z.cssProps[a]||(Z.cssProps[a]=C(t.style,a)),s=Z.cssHooks[e]||Z.cssHooks[a],s&&"get"in s&&(o=s.get(t,!0,n)),void 0===o&&(o=w(t,e,i)),"normal"===o&&e in Qt&&(o=Qt[e]),""===n||n?(r=parseFloat(o),n===!0||Z.isNumeric(r)?r||0:o):o}}),Z.each(["height","width"],function(t,e){Z.cssHooks[e]={get:function(t,n,i){if(n)return Ut.test(Z.css(t,"display"))&&0===t.offsetWidth?Z.swap(t,Xt,function(){return k(t,e,i)}):k(t,e,i)},set:function(t,n,i){var o=i&&Bt(t);return E(t,n,i?$(t,e,i,"border-box"===Z.css(t,"boxSizing",!1,o),o):0)}}}),Z.cssHooks.marginRight=T(Y.reliableMarginRight,function(t,e){if(e)return Z.swap(t,{display:"inline-block"},w,[t,"marginRight"])}),Z.each({margin:"",padding:"",border:"Width"},function(t,e){Z.cssHooks[t+e]={expand:function(n){for(var i=0,o={},r="string"==typeof n?n.split(" "):[n];i<4;i++)o[t+Tt[i]+e]=r[i]||r[i-2]||r[0];return o}},Wt.test(t)||(Z.cssHooks[t+e].set=E)}),Z.fn.extend({css:function(t,e){return mt(this,function(t,e,n){var i,o,r={},s=0;if(Z.isArray(e)){for(i=Bt(t),o=e.length;s<o;s++)r[e[s]]=Z.css(t,e[s],!1,i);return r}return void 0!==n?Z.style(t,e,n):Z.css(t,e)},t,e,arguments.length>1)},show:function(){return S(this,!0)},hide:function(){return S(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Ct(this)?Z(this).show():Z(this).hide()})}}),Z.Tween=N,N.prototype={constructor:N,init:function(t,e,n,i,o,r){this.elem=t,this.prop=n,this.easing=o||"swing",this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=r||(Z.cssNumber[n]?"":"px")},cur:function(){var t=N.propHooks[this.prop];return t&&t.get?t.get(this):N.propHooks._default.get(this)},run:function(t){var e,n=N.propHooks[this.prop];return this.options.duration?this.pos=e=Z.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):N.propHooks._default.set(this),this}},N.prototype.init.prototype=N.prototype,N.propHooks={_default:{get:function(t){var e;return null==t.elem[t.prop]||t.elem.style&&null!=t.elem.style[t.prop]?(e=Z.css(t.elem,t.prop,""),e&&"auto"!==e?e:0):t.elem[t.prop]},set:function(t){Z.fx.step[t.prop]?Z.fx.step[t.prop](t):t.elem.style&&(null!=t.elem.style[Z.cssProps[t.prop]]||Z.cssHooks[t.prop])?Z.style(t.elem,t.prop,t.now+t.unit):t.elem[t.prop]=t.now}}},N.propHooks.scrollTop=N.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},Z.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2}},Z.fx=N.prototype.init,Z.fx.step={};var Yt,Jt,Kt=/^(?:toggle|show|hide)$/,Zt=new RegExp("^(?:([+-])=|)("+wt+")([a-z%]*)$","i"),te=/queueHooks$/,ee=[O],ne={"*":[function(t,e){var n=this.createTween(t,e),i=n.cur(),o=Zt.exec(e),r=o&&o[3]||(Z.cssNumber[t]?"":"px"),s=(Z.cssNumber[t]||"px"!==r&&+i)&&Zt.exec(Z.css(n.elem,t)),a=1,l=20;if(s&&s[3]!==r){r=r||s[3],o=o||[],s=+i||1;do a=a||".5",s/=a,Z.style(n.elem,t,s+r);while(a!==(a=n.cur()/i)&&1!==a&&--l)}return o&&(s=n.start=+s||+i||0,n.unit=r,n.end=o[1]?s+(o[1]+1)*o[2]:+o[2]),n}]};Z.Animation=Z.extend(L,{tweener:function(t,e){Z.isFunction(t)?(e=t,t=["*"]):t=t.split(" ");for(var n,i=0,o=t.length;i<o;i++)n=t[i],ne[n]=ne[n]||[],ne[n].unshift(e)},prefilter:function(t,e){e?ee.unshift(t):ee.push(t)}}),Z.speed=function(t,e,n){var i=t&&"object"==typeof t?Z.extend({},t):{complete:n||!n&&e||Z.isFunction(t)&&t,duration:t,easing:n&&e||e&&!Z.isFunction(e)&&e};return i.duration=Z.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in Z.fx.speeds?Z.fx.speeds[i.duration]:Z.fx.speeds._default,null!=i.queue&&i.queue!==!0||(i.queue="fx"),i.old=i.complete,i.complete=function(){Z.isFunction(i.old)&&i.old.call(this),i.queue&&Z.dequeue(this,i.queue)},i},Z.fn.extend({fadeTo:function(t,e,n,i){return this.filter(Ct).css("opacity",0).show().end().animate({opacity:e},t,n,i)},animate:function(t,e,n,i){var o=Z.isEmptyObject(t),r=Z.speed(e,n,i),s=function(){var e=L(this,Z.extend({},t),r);(o||vt.get(this,"finish"))&&e.stop(!0)};return s.finish=s,o||r.queue===!1?this.each(s):this.queue(r.queue,s)},stop:function(t,e,n){var i=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,o=null!=t&&t+"queueHooks",r=Z.timers,s=vt.get(this);if(o)s[o]&&s[o].stop&&i(s[o]);else for(o in s)s[o]&&s[o].stop&&te.test(o)&&i(s[o]);for(o=r.length;o--;)r[o].elem!==this||null!=t&&r[o].queue!==t||(r[o].anim.stop(n),e=!1,r.splice(o,1));!e&&n||Z.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,n=vt.get(this),i=n[t+"queue"],o=n[t+"queueHooks"],r=Z.timers,s=i?i.length:0;for(n.finish=!0,Z.queue(this,t,[]),o&&o.stop&&o.stop.call(this,!0),e=r.length;e--;)r[e].elem===this&&r[e].queue===t&&(r[e].anim.stop(!0),r.splice(e,1));
 for(e=0;e<s;e++)i[e]&&i[e].finish&&i[e].finish.call(this);delete n.finish})}}),Z.each(["toggle","show","hide"],function(t,e){var n=Z.fn[e];Z.fn[e]=function(t,i,o){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(A(e,!0),t,i,o)}}),Z.each({slideDown:A("show"),slideUp:A("hide"),slideToggle:A("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){Z.fn[t]=function(t,n,i){return this.animate(e,t,n,i)}}),Z.timers=[],Z.fx.tick=function(){var t,e=0,n=Z.timers;for(Yt=Z.now();e<n.length;e++)t=n[e],t()||n[e]!==t||n.splice(e--,1);n.length||Z.fx.stop(),Yt=void 0},Z.fx.timer=function(t){Z.timers.push(t),t()?Z.fx.start():Z.timers.pop()},Z.fx.interval=13,Z.fx.start=function(){Jt||(Jt=setInterval(Z.fx.tick,Z.fx.interval))},Z.fx.stop=function(){clearInterval(Jt),Jt=null},Z.fx.speeds={slow:600,fast:200,_default:400},Z.fn.delay=function(t,e){return t=Z.fx?Z.fx.speeds[t]||t:t,e=e||"fx",this.queue(e,function(e,n){var i=setTimeout(e,t);n.stop=function(){clearTimeout(i)}})},function(){var t=J.createElement("input"),e=J.createElement("select"),n=e.appendChild(J.createElement("option"));t.type="checkbox",Y.checkOn=""!==t.value,Y.optSelected=n.selected,e.disabled=!0,Y.optDisabled=!n.disabled,t=J.createElement("input"),t.value="t",t.type="radio",Y.radioValue="t"===t.value}();var ie,oe,re=Z.expr.attrHandle;Z.fn.extend({attr:function(t,e){return mt(this,Z.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){Z.removeAttr(this,t)})}}),Z.extend({attr:function(t,e,n){var i,o,r=t.nodeType;if(t&&3!==r&&8!==r&&2!==r)return typeof t.getAttribute===$t?Z.prop(t,e,n):(1===r&&Z.isXMLDoc(t)||(e=e.toLowerCase(),i=Z.attrHooks[e]||(Z.expr.match.bool.test(e)?oe:ie)),void 0===n?i&&"get"in i&&null!==(o=i.get(t,e))?o:(o=Z.find.attr(t,e),null==o?void 0:o):null!==n?i&&"set"in i&&void 0!==(o=i.set(t,n,e))?o:(t.setAttribute(e,n+""),n):void Z.removeAttr(t,e))},removeAttr:function(t,e){var n,i,o=0,r=e&&e.match(dt);if(r&&1===t.nodeType)for(;n=r[o++];)i=Z.propFix[n]||n,Z.expr.match.bool.test(n)&&(t[i]=!1),t.removeAttribute(n)},attrHooks:{type:{set:function(t,e){if(!Y.radioValue&&"radio"===e&&Z.nodeName(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}}}),oe={set:function(t,e,n){return e===!1?Z.removeAttr(t,n):t.setAttribute(n,n),n}},Z.each(Z.expr.match.bool.source.match(/\w+/g),function(t,e){var n=re[e]||Z.find.attr;re[e]=function(t,e,i){var o,r;return i||(r=re[e],re[e]=o,o=null!=n(t,e,i)?e.toLowerCase():null,re[e]=r),o}});var se=/^(?:input|select|textarea|button)$/i;Z.fn.extend({prop:function(t,e){return mt(this,Z.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[Z.propFix[t]||t]})}}),Z.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(t,e,n){var i,o,r,s=t.nodeType;if(t&&3!==s&&8!==s&&2!==s)return r=1!==s||!Z.isXMLDoc(t),r&&(e=Z.propFix[e]||e,o=Z.propHooks[e]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:t[e]=n:o&&"get"in o&&null!==(i=o.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){return t.hasAttribute("tabindex")||se.test(t.nodeName)||t.href?t.tabIndex:-1}}}}),Y.optSelected||(Z.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null}}),Z.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){Z.propFix[this.toLowerCase()]=this});var ae=/[\t\r\n\f]/g;Z.fn.extend({addClass:function(t){var e,n,i,o,r,s,a="string"==typeof t&&t,l=0,c=this.length;if(Z.isFunction(t))return this.each(function(e){Z(this).addClass(t.call(this,e,this.className))});if(a)for(e=(t||"").match(dt)||[];l<c;l++)if(n=this[l],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(ae," "):" ")){for(r=0;o=e[r++];)i.indexOf(" "+o+" ")<0&&(i+=o+" ");s=Z.trim(i),n.className!==s&&(n.className=s)}return this},removeClass:function(t){var e,n,i,o,r,s,a=0===arguments.length||"string"==typeof t&&t,l=0,c=this.length;if(Z.isFunction(t))return this.each(function(e){Z(this).removeClass(t.call(this,e,this.className))});if(a)for(e=(t||"").match(dt)||[];l<c;l++)if(n=this[l],i=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(ae," "):"")){for(r=0;o=e[r++];)for(;i.indexOf(" "+o+" ")>=0;)i=i.replace(" "+o+" "," ");s=t?Z.trim(i):"",n.className!==s&&(n.className=s)}return this},toggleClass:function(t,e){var n=typeof t;return"boolean"==typeof e&&"string"===n?e?this.addClass(t):this.removeClass(t):Z.isFunction(t)?this.each(function(n){Z(this).toggleClass(t.call(this,n,this.className,e),e)}):this.each(function(){if("string"===n)for(var e,i=0,o=Z(this),r=t.match(dt)||[];e=r[i++];)o.hasClass(e)?o.removeClass(e):o.addClass(e);else n!==$t&&"boolean"!==n||(this.className&&vt.set(this,"__className__",this.className),this.className=this.className||t===!1?"":vt.get(this,"__className__")||"")})},hasClass:function(t){for(var e=" "+t+" ",n=0,i=this.length;n<i;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(ae," ").indexOf(e)>=0)return!0;return!1}});var le=/\r/g;Z.fn.extend({val:function(t){var e,n,i,o=this[0];{if(arguments.length)return i=Z.isFunction(t),this.each(function(n){var o;1===this.nodeType&&(o=i?t.call(this,n,Z(this).val()):t,null==o?o="":"number"==typeof o?o+="":Z.isArray(o)&&(o=Z.map(o,function(t){return null==t?"":t+""})),e=Z.valHooks[this.type]||Z.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,o,"value")||(this.value=o))});if(o)return e=Z.valHooks[o.type]||Z.valHooks[o.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(n=e.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(le,""):null==n?"":n)}}}),Z.extend({valHooks:{option:{get:function(t){var e=Z.find.attr(t,"value");return null!=e?e:Z.trim(Z.text(t))}},select:{get:function(t){for(var e,n,i=t.options,o=t.selectedIndex,r="select-one"===t.type||o<0,s=r?null:[],a=r?o+1:i.length,l=o<0?a:r?o:0;l<a;l++)if(n=i[l],(n.selected||l===o)&&(Y.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!Z.nodeName(n.parentNode,"optgroup"))){if(e=Z(n).val(),r)return e;s.push(e)}return s},set:function(t,e){for(var n,i,o=t.options,r=Z.makeArray(e),s=o.length;s--;)i=o[s],(i.selected=Z.inArray(i.value,r)>=0)&&(n=!0);return n||(t.selectedIndex=-1),r}}}}),Z.each(["radio","checkbox"],function(){Z.valHooks[this]={set:function(t,e){if(Z.isArray(e))return t.checked=Z.inArray(Z(t).val(),e)>=0}},Y.checkOn||(Z.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}),Z.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(t,e){Z.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),Z.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)},bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,i){return this.on(e,t,n,i)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}});var ce=Z.now(),ue=/\?/;Z.parseJSON=function(t){return JSON.parse(t+"")},Z.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{n=new DOMParser,e=n.parseFromString(t,"text/xml")}catch(i){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||Z.error("Invalid XML: "+t),e};var fe=/#.*$/,pe=/([?&])_=[^&]*/,de=/^(.*?):[ \t]*([^\r\n]*)$/gm,he=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ge=/^(?:GET|HEAD)$/,me=/^\/\//,ve=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,ye={},be={},xe="*/".concat("*"),we=t.location.href,Te=ve.exec(we.toLowerCase())||[];Z.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:we,type:"GET",isLocal:he.test(Te[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":xe,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":Z.parseJSON,"text xml":Z.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?q(q(t,Z.ajaxSettings),e):q(Z.ajaxSettings,t)},ajaxPrefilter:R(ye),ajaxTransport:R(be),ajax:function(t,e){function n(t,e,n,s){var l,u,v,y,x,T=e;2!==b&&(b=2,a&&clearTimeout(a),i=void 0,r=s||"",w.readyState=t>0?4:0,l=t>=200&&t<300||304===t,n&&(y=H(f,w,n)),y=F(f,y,w,l),l?(f.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(Z.lastModified[o]=x),x=w.getResponseHeader("etag"),x&&(Z.etag[o]=x)),204===t||"HEAD"===f.type?T="nocontent":304===t?T="notmodified":(T=y.state,u=y.data,v=y.error,l=!v)):(v=T,!t&&T||(T="error",t<0&&(t=0))),w.status=t,w.statusText=(e||T)+"",l?h.resolveWith(p,[u,T,w]):h.rejectWith(p,[w,T,v]),w.statusCode(m),m=void 0,c&&d.trigger(l?"ajaxSuccess":"ajaxError",[w,f,l?u:v]),g.fireWith(p,[w,T]),c&&(d.trigger("ajaxComplete",[w,f]),--Z.active||Z.event.trigger("ajaxStop")))}"object"==typeof t&&(e=t,t=void 0),e=e||{};var i,o,r,s,a,l,c,u,f=Z.ajaxSetup({},e),p=f.context||f,d=f.context&&(p.nodeType||p.jquery)?Z(p):Z.event,h=Z.Deferred(),g=Z.Callbacks("once memory"),m=f.statusCode||{},v={},y={},b=0,x="canceled",w={readyState:0,getResponseHeader:function(t){var e;if(2===b){if(!s)for(s={};e=de.exec(r);)s[e[1].toLowerCase()]=e[2];e=s[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return 2===b?r:null},setRequestHeader:function(t,e){var n=t.toLowerCase();return b||(t=y[n]=y[n]||t,v[t]=e),this},overrideMimeType:function(t){return b||(f.mimeType=t),this},statusCode:function(t){var e;if(t)if(b<2)for(e in t)m[e]=[m[e],t[e]];else w.always(t[w.status]);return this},abort:function(t){var e=t||x;return i&&i.abort(e),n(0,e),this}};if(h.promise(w).complete=g.add,w.success=w.done,w.error=w.fail,f.url=((t||f.url||we)+"").replace(fe,"").replace(me,Te[1]+"//"),f.type=e.method||e.type||f.method||f.type,f.dataTypes=Z.trim(f.dataType||"*").toLowerCase().match(dt)||[""],null==f.crossDomain&&(l=ve.exec(f.url.toLowerCase()),f.crossDomain=!(!l||l[1]===Te[1]&&l[2]===Te[2]&&(l[3]||("http:"===l[1]?"80":"443"))===(Te[3]||("http:"===Te[1]?"80":"443")))),f.data&&f.processData&&"string"!=typeof f.data&&(f.data=Z.param(f.data,f.traditional)),P(ye,f,e,w),2===b)return w;c=Z.event&&f.global,c&&0===Z.active++&&Z.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!ge.test(f.type),o=f.url,f.hasContent||(f.data&&(o=f.url+=(ue.test(o)?"&":"?")+f.data,delete f.data),f.cache===!1&&(f.url=pe.test(o)?o.replace(pe,"$1_="+ce++):o+(ue.test(o)?"&":"?")+"_="+ce++)),f.ifModified&&(Z.lastModified[o]&&w.setRequestHeader("If-Modified-Since",Z.lastModified[o]),Z.etag[o]&&w.setRequestHeader("If-None-Match",Z.etag[o])),(f.data&&f.hasContent&&f.contentType!==!1||e.contentType)&&w.setRequestHeader("Content-Type",f.contentType),w.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+xe+"; q=0.01":""):f.accepts["*"]);for(u in f.headers)w.setRequestHeader(u,f.headers[u]);if(f.beforeSend&&(f.beforeSend.call(p,w,f)===!1||2===b))return w.abort();x="abort";for(u in{success:1,error:1,complete:1})w[u](f[u]);if(i=P(be,f,e,w)){w.readyState=1,c&&d.trigger("ajaxSend",[w,f]),f.async&&f.timeout>0&&(a=setTimeout(function(){w.abort("timeout")},f.timeout));try{b=1,i.send(v,n)}catch(T){if(!(b<2))throw T;n(-1,T)}}else n(-1,"No Transport");return w},getJSON:function(t,e,n){return Z.get(t,e,n,"json")},getScript:function(t,e){return Z.get(t,void 0,e,"script")}}),Z.each(["get","post"],function(t,e){Z[e]=function(t,n,i,o){return Z.isFunction(n)&&(o=o||i,i=n,n=void 0),Z.ajax({url:t,type:e,dataType:o,data:n,success:i})}}),Z._evalUrl=function(t){return Z.ajax({url:t,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},Z.fn.extend({wrapAll:function(t){var e;return Z.isFunction(t)?this.each(function(e){Z(this).wrapAll(t.call(this,e))}):(this[0]&&(e=Z(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this)},wrapInner:function(t){return Z.isFunction(t)?this.each(function(e){Z(this).wrapInner(t.call(this,e))}):this.each(function(){var e=Z(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=Z.isFunction(t);return this.each(function(n){Z(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(){return this.parent().each(function(){Z.nodeName(this,"body")||Z(this).replaceWith(this.childNodes)}).end()}}),Z.expr.filters.hidden=function(t){return t.offsetWidth<=0&&t.offsetHeight<=0},Z.expr.filters.visible=function(t){return!Z.expr.filters.hidden(t)};var Ce=/%20/g,Ee=/\[\]$/,$e=/\r?\n/g,ke=/^(?:submit|button|image|reset|file)$/i,Se=/^(?:input|select|textarea|keygen)/i;Z.param=function(t,e){var n,i=[],o=function(t,e){e=Z.isFunction(e)?e():null==e?"":e,i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(e)};if(void 0===e&&(e=Z.ajaxSettings&&Z.ajaxSettings.traditional),Z.isArray(t)||t.jquery&&!Z.isPlainObject(t))Z.each(t,function(){o(this.name,this.value)});else for(n in t)M(n,t[n],e,o);return i.join("&").replace(Ce,"+")},Z.fn.extend({serialize:function(){return Z.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=Z.prop(this,"elements");return t?Z.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!Z(this).is(":disabled")&&Se.test(this.nodeName)&&!ke.test(t)&&(this.checked||!Et.test(t))}).map(function(t,e){var n=Z(this).val();return null==n?null:Z.isArray(n)?Z.map(n,function(t){return{name:e.name,value:t.replace($e,"\r\n")}}):{name:e.name,value:n.replace($e,"\r\n")}}).get()}}),Z.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(t){}};var Ne=0,De={},Ae={0:200,1223:204},je=Z.ajaxSettings.xhr();t.attachEvent&&t.attachEvent("onunload",function(){for(var t in De)De[t]()}),Y.cors=!!je&&"withCredentials"in je,Y.ajax=je=!!je,Z.ajaxTransport(function(t){var e;if(Y.cors||je&&!t.crossDomain)return{send:function(n,i){var o,r=t.xhr(),s=++Ne;if(r.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)r[o]=t.xhrFields[o];t.mimeType&&r.overrideMimeType&&r.overrideMimeType(t.mimeType),t.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(o in n)r.setRequestHeader(o,n[o]);e=function(t){return function(){e&&(delete De[s],e=r.onload=r.onerror=null,"abort"===t?r.abort():"error"===t?i(r.status,r.statusText):i(Ae[r.status]||r.status,r.statusText,"string"==typeof r.responseText?{text:r.responseText}:void 0,r.getAllResponseHeaders()))}},r.onload=e(),r.onerror=e("error"),e=De[s]=e("abort");try{r.send(t.hasContent&&t.data||null)}catch(a){if(e)throw a}},abort:function(){e&&e()}}}),Z.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(t){return Z.globalEval(t),t}}}),Z.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),Z.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(i,o){e=Z("<script>").prop({async:!0,charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&o("error"===t.type?404:200,t.type)}),J.head.appendChild(e[0])},abort:function(){n&&n()}}}});var Oe=[],Ie=/(=)\?(?=&|$)|\?\?/;Z.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Oe.pop()||Z.expando+"_"+ce++;return this[t]=!0,t}}),Z.ajaxPrefilter("json jsonp",function(e,n,i){var o,r,s,a=e.jsonp!==!1&&(Ie.test(e.url)?"url":"string"==typeof e.data&&!(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ie.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return o=e.jsonpCallback=Z.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ie,"$1"+o):e.jsonp!==!1&&(e.url+=(ue.test(e.url)?"&":"?")+e.jsonp+"="+o),e.converters["script json"]=function(){return s||Z.error(o+" was not called"),s[0]},e.dataTypes[0]="json",r=t[o],t[o]=function(){s=arguments},i.always(function(){t[o]=r,e[o]&&(e.jsonpCallback=n.jsonpCallback,Oe.push(o)),s&&Z.isFunction(r)&&r(s[0]),s=r=void 0}),"script"}),Z.parseHTML=function(t,e,n){if(!t||"string"!=typeof t)return null;"boolean"==typeof e&&(n=e,e=!1),e=e||J;var i=st.exec(t),o=!n&&[];return i?[e.createElement(i[1])]:(i=Z.buildFragment([t],e,o),o&&o.length&&Z(o).remove(),Z.merge([],i.childNodes))};var Le=Z.fn.load;Z.fn.load=function(t,e,n){if("string"!=typeof t&&Le)return Le.apply(this,arguments);var i,o,r,s=this,a=t.indexOf(" ");return a>=0&&(i=Z.trim(t.slice(a)),t=t.slice(0,a)),Z.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(o="POST"),s.length>0&&Z.ajax({url:t,type:o,dataType:"html",data:e}).done(function(t){r=arguments,s.html(i?Z("<div>").append(Z.parseHTML(t)).find(i):t)}).complete(n&&function(t,e){s.each(n,r||[t.responseText,e,t])}),this},Z.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){Z.fn[e]=function(t){return this.on(e,t)}}),Z.expr.filters.animated=function(t){return Z.grep(Z.timers,function(e){return t===e.elem}).length};var Re=t.document.documentElement;Z.offset={setOffset:function(t,e,n){var i,o,r,s,a,l,c,u=Z.css(t,"position"),f=Z(t),p={};"static"===u&&(t.style.position="relative"),a=f.offset(),r=Z.css(t,"top"),l=Z.css(t,"left"),c=("absolute"===u||"fixed"===u)&&(r+l).indexOf("auto")>-1,c?(i=f.position(),s=i.top,o=i.left):(s=parseFloat(r)||0,o=parseFloat(l)||0),Z.isFunction(e)&&(e=e.call(t,n,a)),null!=e.top&&(p.top=e.top-a.top+s),null!=e.left&&(p.left=e.left-a.left+o),"using"in e?e.using.call(t,p):f.css(p)}},Z.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){Z.offset.setOffset(this,t,e)});var e,n,i=this[0],o={top:0,left:0},r=i&&i.ownerDocument;if(r)return e=r.documentElement,Z.contains(e,i)?(typeof i.getBoundingClientRect!==$t&&(o=i.getBoundingClientRect()),n=W(r),{top:o.top+n.pageYOffset-e.clientTop,left:o.left+n.pageXOffset-e.clientLeft}):o},position:function(){if(this[0]){var t,e,n=this[0],i={top:0,left:0};return"fixed"===Z.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),Z.nodeName(t[0],"html")||(i=t.offset()),i.top+=Z.css(t[0],"borderTopWidth",!0),i.left+=Z.css(t[0],"borderLeftWidth",!0)),{top:e.top-i.top-Z.css(n,"marginTop",!0),left:e.left-i.left-Z.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||Re;t&&!Z.nodeName(t,"html")&&"static"===Z.css(t,"position");)t=t.offsetParent;return t||Re})}}),Z.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var i="pageYOffset"===n;Z.fn[e]=function(o){return mt(this,function(e,o,r){var s=W(e);return void 0===r?s?s[n]:e[o]:void(s?s.scrollTo(i?t.pageXOffset:r,i?r:t.pageYOffset):e[o]=r)},e,o,arguments.length,null)}}),Z.each(["top","left"],function(t,e){Z.cssHooks[e]=T(Y.pixelPosition,function(t,n){if(n)return n=w(t,e),_t.test(n)?Z(t).position()[e]+"px":n})}),Z.each({Height:"height",Width:"width"},function(t,e){Z.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,i){Z.fn[i]=function(i,o){var r=arguments.length&&(n||"boolean"!=typeof i),s=n||(i===!0||o===!0?"margin":"border");return mt(this,function(e,n,i){var o;return Z.isWindow(e)?e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===i?Z.css(e,n,s):Z.style(e,n,i,s)},e,r?i:void 0,r,null)}})}),Z.fn.size=function(){return this.length},Z.fn.andSelf=Z.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return Z});var Pe=t.jQuery,qe=t.$;return Z.noConflict=function(e){return t.$===Z&&(t.$=qe),e&&t.jQuery===Z&&(t.jQuery=Pe),Z},typeof e===$t&&(t.jQuery=t.$=Z),Z}),"undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}t.fn.emulateTransitionEnd=function(e){var n=!1,i=this;t(this).one("bsTransitionEnd",function(){n=!0});var o=function(){n||t(i).trigger(t.support.transition.end)};return setTimeout(o,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var n=t(this),o=n.data("bs.alert");o||n.data("bs.alert",o=new i(this)),"string"==typeof e&&o[e].call(n)})}var n='[data-dismiss="alert"]',i=function(e){t(e).on("click",n,this.close)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.prototype.close=function(e){function n(){s.detach().trigger("closed.bs.alert").remove()}var o=t(this),r=o.attr("data-target");r||(r=o.attr("href"),r=r&&r.replace(/.*(?=#[^\s]*$)/,""));var s=t("#"===r?[]:r);e&&e.preventDefault(),s.length||(s=o.closest(".alert")),s.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(s.removeClass("in"),t.support.transition&&s.hasClass("fade")?s.one("bsTransitionEnd",n).emulateTransitionEnd(i.TRANSITION_DURATION):n())};var o=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=i,t.fn.alert.noConflict=function(){return t.fn.alert=o,this},t(document).on("click.bs.alert.data-api",n,i.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),o=i.data("bs.button"),r="object"==typeof e&&e;o||i.data("bs.button",o=new n(this,r)),"toggle"==e?o.toggle():e&&o.setState(e)})}var n=function(e,i){this.$element=t(e),this.options=t.extend({},n.DEFAULTS,i),this.isLoading=!1};n.VERSION="3.3.7",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(e){var n="disabled",i=this.$element,o=i.is("input")?"val":"html",r=i.data();e+="Text",null==r.resetText&&i.data("resetText",i[o]()),setTimeout(t.proxy(function(){i[o](null==r[e]?this.options[e]:r[e]),"loadingText"==e?(this.isLoading=!0,i.addClass(n).attr(n,n).prop(n,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(n).removeAttr(n).prop(n,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=e,t.fn.button.Constructor=n,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var i=t(n.target).closest(".btn");e.call(i,"toggle"),t(n.target).is('input[type="radio"], input[type="checkbox"]')||(n.preventDefault(),i.is("input,button")?i.trigger("focus"):i.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),o=i.data("bs.carousel"),r=t.extend({},n.DEFAULTS,i.data(),"object"==typeof e&&e),s="string"==typeof e?e:r.slide;o||i.data("bs.carousel",o=new n(this,r)),"number"==typeof e?o.to(e):s?o[s]():r.interval&&o.pause().cycle()})}var n=function(e,n){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};n.VERSION="3.3.7",n.TRANSITION_DURATION=600,n.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},n.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},n.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},n.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},n.prototype.getItemForDirection=function(t,e){var n=this.getItemIndex(e),i="prev"==t&&0===n||"next"==t&&n==this.$items.length-1;if(i&&!this.options.wrap)return e;var o="prev"==t?-1:1,r=(n+o)%this.$items.length;return this.$items.eq(r)},n.prototype.to=function(t){var e=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",this.$items.eq(t))},n.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},n.prototype.next=function(){if(!this.sliding)return this.slide("next")},n.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},n.prototype.slide=function(e,i){var o=this.$element.find(".item.active"),r=i||this.getItemForDirection(e,o),s=this.interval,a="next"==e?"left":"right",l=this;if(r.hasClass("active"))return this.sliding=!1;var c=r[0],u=t.Event("slide.bs.carousel",{relatedTarget:c,direction:a});if(this.$element.trigger(u),!u.isDefaultPrevented()){if(this.sliding=!0,s&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var f=t(this.$indicators.children()[this.getItemIndex(r)]);f&&f.addClass("active")}var p=t.Event("slid.bs.carousel",{relatedTarget:c,direction:a});return t.support.transition&&this.$element.hasClass("slide")?(r.addClass(e),r[0].offsetWidth,o.addClass(a),r.addClass(a),o.one("bsTransitionEnd",function(){r.removeClass([e,a].join(" ")).addClass("active"),o.removeClass(["active",a].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(p)},0)}).emulateTransitionEnd(n.TRANSITION_DURATION)):(o.removeClass("active"),r.addClass("active"),this.sliding=!1,this.$element.trigger(p)),s&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=n,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this};var o=function(n){var i,o=t(this),r=t(o.attr("data-target")||(i=o.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,""));if(r.hasClass("carousel")){var s=t.extend({},r.data(),o.data()),a=o.attr("data-slide-to");a&&(s.interval=!1),e.call(r,s),a&&r.data("bs.carousel").to(a),n.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",o).on("click.bs.carousel.data-api","[data-slide-to]",o),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var n=t(this);e.call(n,n.data())})})}(jQuery),+function(t){"use strict";function e(e){var n,i=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(i)}function n(e){return this.each(function(){var n=t(this),o=n.data("bs.collapse"),r=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);!o&&r.toggle&&/show|hide/.test(e)&&(r.toggle=!1),o||n.data("bs.collapse",o=new i(this,r)),"string"==typeof e&&o[e]()})}var i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};i.VERSION="3.3.7",i.TRANSITION_DURATION=350,i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,o=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(o&&o.length&&(e=o.data("bs.collapse"),e&&e.transitioning))){var r=t.Event("show.bs.collapse");if(this.$element.trigger(r),!r.isDefaultPrevented()){o&&o.length&&(n.call(o,"hide"),e||o.data("bs.collapse",null));var s=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[s](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var a=function(){this.$element.removeClass("collapsing").addClass("collapse in")[s](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return a.call(this);var l=t.camelCase(["scroll",s].join("-"));this.$element.one("bsTransitionEnd",t.proxy(a,this)).emulateTransitionEnd(i.TRANSITION_DURATION)[s](this.$element[0][l])}}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[n](0).one("bsTransitionEnd",t.proxy(o,this)).emulateTransitionEnd(i.TRANSITION_DURATION):o.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},i.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(n,i){var o=t(i);this.addAriaAndCollapsedClass(e(o),o)},this)).end()},i.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var o=t.fn.collapse;t.fn.collapse=n,t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=o,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(i){var o=t(this);o.attr("data-target")||i.preventDefault();var r=e(o),s=r.data("bs.collapse"),a=s?"toggle":o.data();n.call(r,a)})}(jQuery),+function(t){"use strict";function e(e){var n=e.attr("data-target");n||(n=e.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var i=n&&t(n);return i&&i.length?i:e.parent()}function n(n){n&&3===n.which||(t(o).remove(),t(r).each(function(){var i=t(this),o=e(i),r={relatedTarget:this};o.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(o[0],n.target)||(o.trigger(n=t.Event("hide.bs.dropdown",r)),n.isDefaultPrevented()||(i.attr("aria-expanded","false"),o.removeClass("open").trigger(t.Event("hidden.bs.dropdown",r)))));
diff --git a/xos/core/xoslib/static/js/xosCeilometerDashboard.js b/xos/core/xoslib/static/js/xosCeilometerDashboard.js
index 3ab0370..eb1a99a 100644
--- a/xos/core/xoslib/static/js/xosCeilometerDashboard.js
+++ b/xos/core/xoslib/static/js/xosCeilometerDashboard.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.ceilometerDashboard",["ngResource","ngCookies","ui.router","xos.helpers","ngAnimate","chart.js","ui.bootstrap.accordion"]).config(["$stateProvider","$urlRouterProvider",function(e,t){e.state("ceilometerDashboard",{url:"/",template:"<ceilometer-dashboard></ceilometer-dashboard>"}).state("samples",{url:"/:name/:tenant/samples",template:"<ceilometer-samples></ceilometer-samples>"}),t.otherwise("/")}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).run(["$rootScope",function(e){e.stateName="ceilometerDashboard",e.$on("$stateChangeStart",function(t,n){e.stateName=n.name})}]),angular.module("xos.ceilometerDashboard").run(["$templateCache",function(e){e.put("templates/accordion-group.html",'<div class="panel {{panelClass || \'panel-default\'}}">\n  <div class="panel-heading" ng-keypress="toggleOpen($event)">\n    <h5>\n      <a href tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading"><span ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n    </h5>\n  </div>\n  <div class="panel-collapse collapse" uib-collapse="!isOpen">\n\t  <div class="panel-body" ng-transclude></div>\n  </div>\n</div>\n'),e.put("templates/accordion.html",'<div class="panel-group" ng-transclude></div>'),e.put("templates/ceilometer-dashboard.tpl.html",'<div class="row">\n  <div class="col-sm-10">\n    <h3>XOS Monitoring Statistics</h3>\n  </div>\n  <div class="col-xs-2 text-right">\n    <a href="" class="btn btn-default" \n      ng-show="vm.selectedSlice && !vm.showStats"\n      ng-click="vm.showStats = true">\n      <i class="glyphicon glyphicon-transfer"></i>\n    </a>\n    <a href="" class="btn btn-default" \n      ng-show="vm.selectedSlice && vm.showStats"\n      ng-click="vm.showStats = false">\n      <i class="glyphicon glyphicon-transfer"></i>\n    </a>\n  </div>\n</div>\n\n<div class="row" ng-show="vm.loader">\n  <div class="col-xs-12">\n    <div class="loader">Loading</div>\n  </div>\n</div>\n\n<section ng-hide="vm.loader" ng-class="{animate: !vm.loader}">\n  <div class="row">\n    <div class="col-sm-3 service-list">\n        <h4>XOS Service: </h4>\n        <uib-accordion close-others="true" template-url="templates/accordion.html">\n          <uib-accordion-group\n            ng-repeat="service in vm.services | orderBy:\'-service\'"\n            template-url="templates/accordion-group.html"\n            is-open="vm.accordion.open[service.service]"\n            heading="{{service.service}}">\n            <h5>Slices:</h5>\n            <a ng-repeat="slice in service.slices" \n              ng-class="{active: slice.slice === vm.selectedSlice}"\n              ng-click="vm.loadSliceMeter(slice, service.service)"\n              href="#" class="list-group-item" >\n              {{slice.slice}} <i class="glyphicon glyphicon-chevron-right pull-right"></i>\n            </a>\n          </uib-accordion-group>\n        </uib-accordion>\n    </div>\n    <section class="side-container col-sm-9">\n      <div class="row">\n        <!-- STATS -->\n        <article ng-hide="!vm.showStats" class="stats animate-slide-left">\n          <div class="col-xs-12">\n            <div class="list-group">\n              <div class="list-group-item">\n                <h4>Stats</h4>\n              </div>\n              <div class="list-group-item">\n                <ceilometer-stats ng-if="vm.selectedSlice" name="vm.selectedSlice" tenant="vm.selectedTenant"></ceilometer-stats>\n              </div>\n            </div>\n          </div>\n        </article>\n        <!-- METERS -->\n        <article ng-hide="vm.showStats" class="meters animate-slide-left">\n          <div class="alert alert-danger" ng-show="vm.ceilometerError">\n            {{vm.ceilometerError}}\n          </div>\n          <div class="col-sm-4 animate-slide-left" ng-hide="!vm.selectedSlice">\n            <div class="list-group">\n              <div class="list-group-item">\n                <h4>Resources</h4>\n              </div>\n              <a href="#" \n                ng-click="vm.selectMeters(meters, resource)" \n                class="list-group-item" \n                ng-repeat="(resource, meters) in vm.selectedResources" \n                ng-class="{active: resource === vm.selectedResource}">\n                {{resource}} <i class="glyphicon glyphicon-chevron-right pull-right"></i>\n              </a>\n            </div>\n          </div>\n          <div class="col-sm-8 animate-slide-left" ng-hide="!vm.selectedMeters">\n            <div class="list-group">\n              <div class="list-group-item">\n                <h4>Meters</h4>\n              </div>\n              <div class="list-group-item">\n                <div class="row">\n                  <div class="col-xs-6">\n                    <label>Name:</label>\n                  </div>\n                  <div class="col-xs-3">\n                    <label>Unit:</label>\n                  </div>\n                  <div class="col-xs-3"></div>\n                </div>\n                <div class="row" ng-repeat="meter in vm.selectedMeters" style="margin-bottom: 10px;">\n                  <div class="col-xs-6">\n                    {{meter.name}}\n                  </div>\n                  <div class="col-xs-3">\n                    {{meter.unit}}\n                  </div>\n                  <div class="col-xs-3">\n                    <!-- tenant: meter.resource_id -->\n                    <a ui-sref="samples({name: meter.name, tenant: meter.resource_id})" class="btn btn-primary">\n                      <i class="glyphicon glyphicon-search"></i>\n                    </a>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </article>\n      </div>\n    </section>\n  </div>\n</section>\n<section ng-if="!vm.loader && vm.error">\n  <div class="alert alert-danger">\n    {{vm.error}}\n  </div>\n</section>\n'),e.put("templates/ceilometer-samples.tpl.html",'<!-- <pre>{{ vm | json}}</pre> -->\n\n<div class="row">\n  <div class="col-xs-10">\n    <h1>{{vm.name | uppercase}}</h1>\n  </div>\n  <div class="col-xs-2">\n    <a ui-sref="ceilometerDashboard" class="btn btn-primary pull-right">\n      <i class="glyphicon glyphicon-arrow-left"></i> Back to list\n    </a>\n  </div>\n</div>\n<div class="row" ng-show="vm.loader">\n  <div class="col-xs-12">\n    <div class="loader">Loading</div>\n  </div>\n</div>\n<section ng-if="!vm.loader && !vm.error">\n  <div class="row" ng-if="vm.chartType !== \'pie\'">\n    <form class="form-inline col-xs-8" ng-submit="vm.addMeterToChart(vm.addMeterValue)">\n      <select ng-model="vm.addMeterValue" class="form-control" ng-options="resource.id as resource.name for resource in vm.sampleLabels"></select>\n      <button class="btn btn-success"> \n        <i class="glyphicon glyphicon-plus"></i> Add\n      </button>\n    </form>\n    <div class="col-xs-4 text-right">\n      <a ng-click="vm.chartType = \'line\'" class="btn" ng-class="{\'btn-default\': vm.chartType != \'bar\', \'btn-primary\': vm.chartType == \'line\'}">Lines</a>\n      <a ng-click="vm.chartType = \'bar\'" class="btn" ng-class="{\'btn-default\': vm.chartType != \'line\', \'btn-primary\': vm.chartType == \'bar\'}">Bars</a>\n    </div>\n  </div>\n  <div class="row" ng-if="!vm.loader">\n    <div class="col-xs-12">\n      <canvas ng-if="vm.chartType === \'line\'" id="line" class="chart chart-line" chart-data="vm.chart.data" chart-options="{datasetFill: false}"\n        chart-labels="vm.chart.labels" chart-legend="false" chart-series="vm.chart.series">\n      </canvas>\n      <canvas ng-if="vm.chartType === \'bar\'" id="bar" class="chart chart-bar" chart-data="vm.chart.data"\n        chart-labels="vm.chart.labels" chart-legend="false" chart-series="vm.chart.series">\n      </canvas>\n    </div>\n    <!-- PIE CHART -->\n    <div class="col-xs-8" ng-if="vm.chartType === \'pie\'">\n      <canvas id="pie" class="chart chart-pie"\n        chart-data="vm.chart.data" chart-labels="vm.chart.labels" chart-options="vm.chart.options">\n      </canvas> \n    </div>\n    <div class="col-xs-4" ng-if="vm.chartType === \'pie\'">\n      <div class="row" ng-repeat="item in vm.chart.labels">\n        <div class="col-xs-12">\n          <span \n            class="btn btn-chart"\n            ng-style="{\'background-color\': vm.chartColors[$index]}">\n            {{item}}: {{vm.chart.data[$index]}}%\n          </span>\n        </div>\n      </div>\n    </div>\n    <!-- END PIE CHART -->\n  </div>\n  <div class="row" ng-if="!vm.loader">\n    <div class="col-xs-12">\n      <a ng-click="vm.removeFromChart(meter)" class="btn btn-chart" ng-style="{\'background-color\': vm.chartColors[$index]}" ng-repeat="meter in vm.chartMeters">\n        {{meter.resource_name || meter.resource_id}}\n      </a>\n    </div>\n  </div>\n</section>\n<section ng-if="!vm.loader && vm.error">\n  <div class="alert alert-danger">\n    {{vm.error}}\n  </div>\n</section>'),e.put("templates/ceilometer-stats.tpl.html",'<div ng-show="vm.loader" class="loader">Loading</div>\n\n<section ng-if="!vm.loader && !vm.error">\n\n  <div class="alert alert-danger" ng-if="vm.stats.length == 0">\n    No result\n  </div>  \n\n  <table class="table" ng-if="vm.stats.length > 0">\n    <tr>\n      <th>\n        <a ng-click="(order == \'category\') ? order = \'-category\' : order = \'category\'">Type:</a>\n      </th>\n      <th>\n        <a ng-click="(order == \'resource_name\') ? order = \'-resource_name\' : order = \'resource_name\'">Resource:</a>\n      </th>\n      <th>\n        <a ng-click="(order == \'meter\') ? order = \'-meter\' : order = \'meter\'">Meter:</a>\n      </th>\n      <th>\n        Unit:\n      </th>\n      <th>\n        Value:\n      </th>\n    </tr>\n    <!-- <tr>\n      <td>\n        <input type="text" ng-model="query.category">\n      </td>\n      <td>\n        <input type="text" ng-model="query.resource_name">\n      </td>\n      <td>\n        <input type="text" ng-model="query.meter">\n      </td>\n      <td>\n        <input type="text" ng-model="query.unit">\n      </td>\n      <td>\n        <input type="text" ng-model="query.value">\n      </td>\n    </tr> -->\n    <tr ng-repeat="item in vm.stats | orderBy:order">\n      <td>{{item.category}}</td>\n      <td>{{item.resource_name}}</td>\n      <td>{{item.meter}}</td>\n      <td>{{item.unit}}</td>\n      <td>{{item.value}}</td>\n    </tr>\n  </table>\n</section>\n\n<section ng-if="!vm.loader && vm.error">\n  <div class="alert alert-danger">\n    {{vm.error}}\n  </div>\n</section>\n'),e.put("templates/users-list.tpl.html",'<xos-table config="vm.tableConfig" data="vm.users"></xos-table>')}]),function(){angular.module("xos.ceilometerDashboard").directive("ceilometerStats",function(){return{restrict:"E",scope:{name:"=name",tenant:"=tenant"},bindToController:!0,controllerAs:"vm",templateUrl:"templates/ceilometer-stats.tpl.html",controller:["$scope","Ceilometer",function(e,t){var n=this;this.getStats=function(e){n.loader=!0,t.getStats({tenant:e}).then(function(e){e.map(function(e){return e.resource_name=e.resource_name.replace("mysite_onos_vbng","ONOS_FABRIC"),e.resource_name=e.resource_name.replace("mysite_onos_volt","ONOS_CORD"),e.resource_name=e.resource_name.replace("mysite_vbng","mysite_vRouter"),e}),n.stats=e})["catch"](function(e){n.error=e.data})["finally"](function(){n.loader=!1})},e.$watch(function(){return n.name},function(e){e&&n.getStats(n.tenant)})}]}})}(),function(){angular.module("xos.ceilometerDashboard").directive("ceilometerSamples",["_","$stateParams","$interval",function(e,t,n){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/ceilometer-samples.tpl.html",controller:["Ceilometer",function(r){var s=this;this.chartColors=["#286090","#F7464A","#46BFBD","#FDB45C","#97BBCD","#4D5360","#8c4f9f"],this.chart={series:[],labels:[],data:[]},Chart.defaults.global.colours=this.chartColors,this.chartType="line";var a=["broadview.pt.packet-trace-lag-resolution","broadview.pt.packet-trace-ecmp-resolution"],i=!1,c=6e4;if(!t.name||!t.tenant)throw new Error("Missing Name and Tenant Params!");this.name=t.name,this.tenant=t.tenant,a.indexOf(this.name)>-1&&(i=!0,this.chartType="pie",c=1e4),this.getLabels=function(e){return e.reduce(function(e,t){var n=new Date(t.timestamp);return e.push(n.getHours()+":"+((n.getMinutes()<10?"0":"")+n.getMinutes())+":"+n.getSeconds()),e},[])},this.getData=function(e){return e.reduce(function(e,t){return e.push(t.volume),e},[])},this.chartMeters=[],this.addMeterToChart=function(t){var n=e.findIndex(s.chartMeters,function(e){return e.resource_id===t});n<0?(s.chart.data.push(s.getData(e.sortBy(s.samplesList[t],"timestamp"))),s.chart.labels=s.getLabels(e.sortBy(s.samplesList[t],"timestamp")),s.chart.series.push(t),s.chartMeters.push(s.samplesList[t][0]),e.remove(s.sampleLabels,{id:t})):(s.chart.data[n]=s.getData(e.sortBy(s.samplesList[t],"timestamp")),s.chart.labels=s.getLabels(e.sortBy(s.samplesList[t],"timestamp")),s.chart.series[n]=t)},this.removeFromChart=function(t){s.chart.data.splice(s.chart.series.indexOf(t.resource_id),1),s.chart.series.splice(s.chart.series.indexOf(t.resource_id),1),s.chartMeters.splice(e.findIndex(s.chartMeters,{resource_id:t.resource_id}),1),s.sampleLabels.push({id:t.resource_id,name:t.resource_name||t.resource_id})},this.formatSamplesLabels=function(t){return e.uniq(t,"resource_id").reduce(function(e,t){return e.push({id:t.resource_id,name:t.resource_name||t.resource_id}),e},[])},this.formatPieChartData=function(t){s.chart.labels=t[0].metadata["lag-members"].replace(/\[|\]|'| /g,"").split(","),s.chart.options={legend:{display:!0}},t=e.groupBy(t,function(e){return e.metadata["dst-lag-member"]}),Chart.defaults.global.tooltipTemplate="<%if (label){%><%=label%>: <%}%><%= value %>%";var n=e.reduce(s.chart.labels,function(e,n){var r=t[n]?t[n].length:0;return e.push(r),e},[]),r=e.reduce(n,function(e,t){return e+t}),a=e.map(n,function(e){return Math.round(e/r*100)});console.log(r),s.chart.data=a},this.loader=!0,this.showSamples=function(){var t=void 0;t=i?r.getSamples(s.name,30):r.getSamples(s.name),t.then(function(t){return t.map(function(e){return e.resource_name=e.resource_name.replace("mysite_onos_vbng","ONOS_FABRIC"),e.resource_name=e.resource_name.replace("mysite_onos_volt","ONOS_CORD"),e.resource_name=e.resource_name.replace("mysite_vbng","mysite_vRouter"),e}),i?void s.formatPieChartData(t):(s.samplesList=e.groupBy(t,"resource_id"),s.sampleLabels=s.formatSamplesLabels(t),void s.addMeterToChart(s.tenant))})["catch"](function(e){s.error=e.data.detail})["finally"](function(){s.loader=!1})},n(function(){s.showSamples()},c),this.showSamples()}]}}])}(),function(){angular.module("xos.ceilometerDashboard").service("Ceilometer",["$http","$q",function(e,t){this.getMappings=function(){var n=t.defer();return e.get("/api/tenant/monitoring/dashboard/xos-slice-service-mapping/").then(function(e){n.resolve(e.data)})["catch"](function(e){n.reject(e)}),n.promise},this.getMeters=function(n){var r=t.defer();return e.get("/api/tenant/monitoring/dashboard/meters/",{cache:!0,params:n}).then(function(e){r.resolve(e.data)})["catch"](function(e){r.reject(e)}),r.promise},this.getSamples=function(n){var r=arguments.length<=1||void 0===arguments[1]?10:arguments[1],s=t.defer();return e.get("/api/tenant/monitoring/dashboard/metersamples/",{params:{meter:n,limit:r}}).then(function(e){s.resolve(e.data)})["catch"](function(e){s.reject(e)}),s.promise},this.getStats=function(n){var r=t.defer();return e.get("/api/tenant/monitoring/dashboard/meterstatistics/",{cache:!0,params:n}).then(function(e){r.resolve(e.data)})["catch"](function(e){r.reject(e)}),r.promise},this.selectedService=null,this.selectedSlice=null,this.selectedResource=null}])}(),function(){angular.module("xos.ceilometerDashboard").directive("ceilometerDashboard",["_",function(e){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/ceilometer-dashboard.tpl.html",controller:["Ceilometer",function(t){var n=this;this.showStats=!1,this.accordion={open:{}},this.openPanels=function(){t.selectedService&&(n.accordion.open[t.selectedService]=!0,t.selectedSlice&&(n.loadSliceMeter(t.selectedSlice,t.selectedService),n.selectedSlice=t.selectedSlice,t.selectedResource&&(n.selectedResource=t.selectedResource)))},this.loadMappings=function(){n.loader=!0,t.getMappings().then(function(e){e.map(function(e){return"service_ONOS_vBNG"===e.service&&(e.service="ONOS_FABRIC"),"service_ONOS_vOLT"===e.service&&(e.service="ONOS_CORD"),e.slices.map(function(e){"mysite_onos_volt"===e.slice&&(e.slice="ONOS_CORD"),"mysite_onos_vbng"===e.slice&&(e.slice="ONOS_FABRIC"),"mysite_vbng"===e.slice&&(e.slice="mysite_vRouter")}),e}),n.services=e,n.openPanels()})["catch"](function(e){n.error=e.data&&e.data.detail?e.data.detail:"An Error occurred. Please try again later."})["finally"](function(){n.loader=!1})},this.loadMappings(),this.loadSliceMeter=function(r,s){t.selectedSlice=null,t.selectedService=null,t.selectedResources=null,n.loader=!0,n.error=null,n.ceilometerError=null,t.getMeters({tenant:r.project_id}).then(function(a){n.selectedSlice=r.slice,n.selectedTenant=r.project_id,t.selectedSlice=r,t.selectedService=s,a.map(function(e){return e.resource_name=e.resource_name.replace("mysite_onos_vbng","ONOS_FABRIC"),e.resource_name=e.resource_name.replace("mysite_onos_volt","ONOS_CORD"),e.resource_name=e.resource_name.replace("mysite_vbng","mysite_vRouter"),e}),n.selectedResources=e.groupBy(a,"resource_name"),t.selectedResource&&(n.selectedMeters=n.selectedResources[t.selectedResource])})["catch"](function(e){return 503===e.status?n.ceilometerError=e.data.detail.specific_error:void(n.ceilometerError=e.data&&e.data.detail&&e.data.detail.specific_error?e.data.detail.specific_error:"An Error occurred. Please try again later.")})["finally"](function(){n.loader=!1})},this.selectedMeters=null,this.selectMeters=function(e,r){n.selectedMeters=e,t.selectedResource=r,n.selectedResource=r}}]}}])}(),angular.module("xos.ceilometerDashboard").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosContentProvider.js b/xos/core/xoslib/static/js/xosContentProvider.js
index 44b9921..a902c2f 100644
--- a/xos/core/xoslib/static/js/xosContentProvider.js
+++ b/xos/core/xoslib/static/js/xosContentProvider.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.contentProvider",["ngResource","ngCookies","xos.helpers","ui.router"]).config(["$stateProvider",function(n){n.state("list",{url:"/",template:"<content-provider-list></content-provider-list>"}).state("details",{url:"/contentProvider/:id",template:"<content-provider-detail></content-provider-detail>"}).state("cdn",{url:"/contentProvider/:id/cdn_prefix",template:"<content-provider-cdn></content-provider-cdn>"}).state("server",{url:"/contentProvider/:id/origin_server",template:"<content-provider-server></content-provider-server>"}).state("users",{url:"/contentProvider/:id/users",template:"<content-provider-users></content-provider-users>"})}]).config(["$httpProvider",function(n){n.interceptors.push("SetCSRFToken"),n.interceptors.push("NoHyperlinks")}]).service("ContentProvider",["$resource",function(n){return n("/hpcapi/contentproviders/:id/",{id:"@id"},{update:{method:"PUT"}})}]).service("ServiceProvider",["$resource",function(n){return n("/hpcapi/serviceproviders/:id/",{id:"@id"})}]).service("CdnPrefix",["$resource",function(n){return n("/hpcapi/cdnprefixs/:id/",{id:"@id"})}]).service("OriginServer",["$resource",function(n){return n("/hpcapi/originservers/:id/",{id:"@id"})}]).service("User",["$resource",function(n){return n("/xos/users/:id/",{id:"@id"})}]).directive("cpActions",["ContentProvider","$location",function(n,e){return{restrict:"E",scope:{id:"=id"},bindToController:!0,controllerAs:"vm",templateUrl:"templates/cp_actions.html",controller:function(){this.deleteCp=function(t){n["delete"]({id:t}).$promise.then(function(){e.url("/")})}}}}]).directive("contentProviderList",["ContentProvider","_",function(n,e){return{restrict:"E",controllerAs:"vm",scope:{},templateUrl:"templates/cp_list.html",controller:function(){this.tableConfig={columns:[{label:"Name",field:"humanReadableName"},{label:"Description",field:"description"},{label:"Status",field:"enabled"}],enableActions:!0};var t=this;n.query().$promise.then(function(n){t.contentProviderList=n})["catch"](function(n){throw new Error(n)}),this.deleteCp=function(s){n["delete"]({id:s}).$promise.then(function(){e.remove(t.contentProviderList,{id:s})})}}}}]).directive("contentProviderDetail",["ContentProvider","ServiceProvider","$stateParams","$location",function(n,e,t,s){return{restrict:"E",controllerAs:"vm",scope:{},templateUrl:"templates/cp_detail.html",controller:function(){this.pageName="detail";var i=this;t.id?n.get({id:t.id}).$promise.then(function(n){i.cp=n})["catch"](function(n){i.result={status:0,msg:n.data.detail}}):i.cp=new n,e.query().$promise.then(function(n){i.sp=n}),this.saveContentProvider=function(n){var e,t=!1;n.id?e=n.$update():(t=!0,n.name=n.humanReadableName,e=n.$save()),e.then(function(n){i.result={status:1,msg:"Content Provider Saved"},t&&s.url("contentProvider/"+n.id+"/")})["catch"](function(n){i.result={status:0,msg:n.data.detail}})}}}}]).directive("contentProviderCdn",["$stateParams","CdnPrefix","ContentProvider",function(n,e,t){return{restrict:"E",controllerAs:"vm",scope:{},templateUrl:"templates/cp_cdn_prefix.html",controller:["_",function(s){var i=this;this.pageName="cdn",n.id&&t.get({id:n.id}).$promise.then(function(n){i.cp=n})["catch"](function(n){i.result={status:0,msg:n.data?n.data.detail:""}}),e.query().$promise.then(function(e){i.prf=e,i.cp_prf=[],i.cp_prf.push(s.find(e,{contentProvider:parseInt(n.id)}))})["catch"](function(n){i.result={status:0,msg:n.data.detail}}),this.addPrefix=function(t){t.contentProvider=n.id;var s=new e(t);s.$save().then(function(n){i.cp_prf.push(n)})["catch"](function(n){i.result={status:0,msg:n.data.detail}})},this.removePrefix=function(n){n.$delete().then(function(){s.remove(i.cp_prf,n)})["catch"](function(n){i.result={status:0,msg:n.data.detail}})}}]}}]).directive("contentProviderServer",["$stateParams","OriginServer","ContentProvider",function(n,e,t){return{restrict:"E",controllerAs:"vm",scope:{},templateUrl:"templates/cp_origin_server.html",controller:["_",function(s){this.pageName="server",this.protocols={http:"HTTP",rtmp:"RTMP",rtp:"RTP",shout:"SHOUTcast"};var i=this;n.id&&t.get({id:n.id}).$promise.then(function(n){i.cp=n})["catch"](function(n){i.result={status:0,msg:n.data.detail}}),e.query({contentProvider:n.id}).$promise.then(function(n){i.cp_os=n})["catch"](function(n){i.result={status:0,msg:n.data.detail}}),this.addOrigin=function(t){t.contentProvider=n.id;var s=new e(t);s.$save().then(function(n){i.cp_os.push(n)})["catch"](function(n){i.result={status:0,msg:n.data.detail}})},this.removeOrigin=function(n){n.$delete().then(function(){s.remove(i.cp_os,n)})["catch"](function(n){i.result={status:0,msg:n.data.detail}})}}]}}]).directive("contentProviderUsers",["$stateParams","ContentProvider","User",function(n,e,t){return{restrict:"E",controllerAs:"vm",scope:{},templateUrl:"templates/cp_user.html",controller:["_",function(s){var i=this;this.pageName="user",this.cp_users=[],n.id&&t.query().$promise.then(function(t){return i.users=t,e.get({id:n.id}).$promise}).then(function(n){return n.users=i.populateUser(n.users,i.users),n}).then(function(n){i.cp=n})["catch"](function(n){i.result={status:0,msg:n.data.detail}}),this.populateUser=function(n,e){for(var t=0;t<n.length;t++)n[t]=s.find(e,{id:n[t]});return n},this.addUserToCp=function(n){i.cp.users.push(n)},this.removeUserFromCp=function(n){s.remove(i.cp.users,n)},this.saveContentProvider=function(n){n.users=s.map(n.users,"id"),n.$update().then(function(n){i.cp.users=i.populateUser(n.users,i.users),i.result={status:1,msg:"Content Provider Saved"}})["catch"](function(n){i.result={status:0,msg:n.data.detail}})}}]}}]),angular.module("xos.contentProvider").run(["$templateCache",function(n){n.put("templates/cp_actions.html",'<a href="#/" class="btn btn-default">\n  <i class="icon icon-arrow-left"></i>Back\n</a>\n<a href="#/contentProvider/" class="btn btn-success">\n  <i class="icon icon-plus"></i>Create\n</a>\n<a ng-click="vm.deleteCp(vm.id)" class="btn btn-danger">\n  <i class="icon icon-remove"></i>Remove\n</a>'),n.put("templates/cp_cdn_prefix.html",'<div class="row-fluid">\n  <div class="span6">\n    <h1>{$ vm.cp.humanReadableName $}</h1>\n  </div>\n  <div class="span6 text-right">\n    <cp-actions id="vm.cp.id"></cp-actions>\n  </div>\n</div>\n<hr>\n<div class="row-fluid">\n  <div class="span2">\n    <div ng-include="\'templates/cp_side_nav.html\'"></div>\n  </div>\n  <div class="span10">\n    <div ng-repeat="item in vm.cp_prf" class="well">\n      <div class="row-fluid">\n        <div class="span4">\n          {{item.humanReadableName}}\n        </div>\n        <div class="span6">\n          <!-- TODO show the name instead that id -->\n          {{item.defaultOriginServer}}\n        </div>\n        <div class="span2">\n          <a ng-click="vm.removePrefix(item)" class="btn btn-danger pull-right">\n            <i class="icon icon-remove"></i>\n          </a>\n        </div>\n      </div>\n    </div>\n    <hr>\n    <form ng-submit="vm.addPrefix(vm.new_prf)">\n      <div class="row-fluid">\n        <div class="span4">\n          <label>Prefix</label>\n          <input type="text" ng-model="vm.new_prf.prefix" required style="max-width: 90%">\n        </div>\n        <div class="span6">\n          <label>Default Origin Server</label>\n          <select ng-model="vm.new_prf.defaultOriginServer" style="max-width: 100%">\n            <option ng-repeat="prf in vm.prf" ng-value="prf.id">{$ prf.humanReadableName $}</option>\n          </select>\n        </div>\n        <div class="span2 text-right">\n          <button class="btn btn-success margin-wells">\n            <i class="icon icon-plus"></i>\n          </button>\n        </div>\n      </div>\n    </form>\n    <div class="alert" ng-show="vm.result" ng-class="{\'alert-success\': vm.result.status === 1,\'alert-error\': vm.result.status === 0}">\n      {$ vm.result.msg $}\n    </div>\n  </div>\n</div>'),n.put("templates/cp_detail.html",'<div class="row">\n  <div class="col-xs-6">\n    <h1>{$ vm.cp.humanReadableName $}</h1>\n  </div>\n  <div class="col-xs-6 text-right">\n    <cp-actions id="vm.cp.id"></cp-actions>\n  </div>\n</div>\n<hr>\n<div class="row">\n  <div ng-show="vm.cp.id" class="col-xs-2">\n    <div ng-include="\'templates/cp_side_nav.html\'"></div>\n  </div>\n  <div ng-class="{\'col-xs-10\': vm.cp.id, \'col-xs-12\': !vm.cp.id}">\n  <!-- TODO hide form on not found -->\n    <form ng-submit="vm.saveContentProvider(vm.cp)">\n      <fieldset>\n        <div class="row">\n          <div class="col-xs-6">\n            <label>Name:</label>\n            <input class="form-control" type="text" ng-model="vm.cp.humanReadableName" required/>\n          </div>\n          <div class="col-xs-6">\n            <label class="checkbox">\n              <input class="form-control" type="checkbox" ng-model="vm.cp.enabled" /> Enabled\n            </label>\n          </div>\n        </div>\n        <div class="row">\n          <div class="col-xs-12">\n            <label>Description</label>\n            <textarea class="form-control" ng-model="vm.cp.description"></textarea>\n          </div>\n        </div>\n        <div class="row">\n          <div class="col-xs-12">\n            <label>Service provider</label>\n            <select class="form-control" required ng-model="vm.cp.serviceProvider" ng-options="sp.id as sp.humanReadableName for sp in vm.sp"></select>\n          </div>\n        </div>\n        <div class="row">\n          <div class="col-xs-12">\n            <button class="btn btn-success">\n              <span ng-show="vm.cp.id">Save</span>\n              <span ng-show="!vm.cp.id">Create</span>\n            </button>\n          </div>\n        </div>\n      </fieldset>\n    </form>\n    <div class="alert" ng-show="vm.result" ng-class="{\'alert-success\': vm.result.status === 1,\'alert-danger\': vm.result.status === 0}">\n      {$ vm.result.msg $}\n    </div>\n  </div>\n</div>'),n.put("templates/cp_list.html",'<!-- <xos-table data="vm.contentProviderList" config="vm.config"/> -->\n\n<table class="table table-striped" ng-show="vm.contentProviderList.length > 0">\n  <thead>\n    <tr>\n      <th>\n        Name\n      </th>\n      <th>Description</th>\n      <th>Status</th>\n      <th></th>\n    </tr>\n  </thead>\n  <tr ng-repeat="item in vm.contentProviderList">\n    <td>\n      <a ui-sref="details({ id: item.id })">{$ item.humanReadableName $}</a>\n    </td>\n    <td>\n      {$ item.description $}\n    </td>\n    <td>\n      {$ item.enabled $}\n    </td>\n    <td class="text-right">\n      <a ng-click="vm.deleteCp(item.id)" class="btn btn-danger"><i class="glyphicon glyphicon-remove"></i></a></td>\n  </tr>\n</table>\n<div class="alert alert-error" ng-show="vm.contentProviderList.length == 0">\n  No Content Provider defined\n</div>\n\n<div class="row">\n  <div class="span12 text-right">\n    <a class="btn btn-success"href="#/contentProvider/">Create</a>\n  </div>\n</div>'),n.put("templates/cp_origin_server.html",'<div class="row-fluid">\n  <div class="span6">\n    <h1>{$ vm.cp.humanReadableName $}</h1>\n  </div>\n  <div class="span6 text-right">\n    <cp-actions id="vm.cp.id"></cp-actions>\n  </div>\n</div>\n<hr>\n<div class="row-fluid">\n  <div class="span2">\n    <div ng-include="\'templates/cp_side_nav.html\'"></div>\n  </div>\n  <div class="span10">\n    <div ng-repeat="item in vm.cp_os" class="well">\n      <div class="row-fluid">\n        <div class="span4">\n          {{item.humanReadableName}}\n        </div>\n        <div class="span6">\n          <!-- TODO shoe the name instead that url -->\n          {{item.defaultOriginServer}}\n        </div>\n        <div class="span2">\n          <a ng-click="vm.removeOrigin(item)" class="btn btn-danger pull-right">\n            <i class="icon icon-remove"></i>\n          </a>\n        </div>\n      </div>\n    </div>\n    <hr>\n    <form ng-submit="vm.addOrigin(vm.new_os)">\n      <div class="row-fluid">\n        <div class="span4">\n          <label>Protocol</label>\n          <select ng-model="vm.new_os.protocol" ng-options="k as v for (k,v) in vm.protocols" style="max-width: 100%;"></select>\n        </div>\n        <div class="span6">\n          <label>Url</label>\n          <input type="text" ng-model="vm.new_os.url" required>\n        </div>\n        <div class="span2 text-right">\n          <button class="btn btn-success margin-wells">\n            <i class="icon icon-plus"></i>\n          </button>\n        </div>\n      </div>\n    </form>\n    <div class="alert" ng-show="vm.result" ng-class="{\'alert-success\': vm.result.status === 1,\'alert-error\': vm.result.status === 0}">\n      {$ vm.result.msg $}\n    </div>\n  </div>\n</div>'),n.put("templates/cp_side_nav.html",'<ul class="nav nav-list">\n  <li>\n    <a class="btn" ng-class="{\'btn-primary\': vm.pageName == \'detail\'}" href="#/contentProvider/{$ vm.cp.id $}">Details</a>\n  </li>\n  <li>\n    <a class="btn" ng-class="{\'btn-primary\': vm.pageName == \'cdn\'}" href="#/contentProvider/{$ vm.cp.id $}/cdn_prefix">Cdn Prexix</a>\n  </li>\n  <li>\n    <a class="btn" ng-class="{\'btn-primary\': vm.pageName == \'server\'}" href="#/contentProvider/{$ vm.cp.id $}/origin_server">Origin Server</a>\n  </li>\n  <li>\n    <a class="btn" ng-class="{\'btn-primary\': vm.pageName == \'user\'}" href="#/contentProvider/{$ vm.cp.id $}/users">Users</a>\n  </li>\n</ul>'),n.put("templates/cp_user.html",'<div class="row-fluid">\n  <div class="span6">\n    <h1>{$ vm.cp.humanReadableName $}</h1>\n  </div>\n  <div class="span6 text-right">\n    <cp-actions id="vm.cp.id"></cp-actions>\n  </div>\n</div>\n<hr>\n<div class="row-fluid">\n  <div class="span2">\n    <div ng-include="\'templates/cp_side_nav.html\'"></div>\n  </div>\n  <div class="span10">\n    <div ng-repeat="item in vm.cp.users" class="well">\n      <div class="row-fluid">\n        <div class="span3">\n          {{item.firstname}}\n        </div>\n        <div class="span3">\n          {{item.lastname}}\n        </div>\n        <div class="span4">\n          {{item.email}}\n        </div>\n        <div class="span2">\n          <a ng-click="vm.removeUserFromCp(item)" class="btn btn-danger pull-right">\n            <i class="icon icon-remove"></i>\n          </a>\n        </div>\n      </div>\n    </div>\n    <hr>\n    <form ng-submit="vm.saveContentProvider(vm.cp)">\n      <div class="row-fluid">\n        <div class="span8">\n          <label>Select user:</label>\n          <select ng-model="vm.user" ng-options="u as u.username for u in vm.users" ng-change="vm.addUserToCp(vm.user)"></select>\n        </div>  \n        <div class="span4 text-right">\n          <button class="btn btn-success margin-wells">\n            Save\n          </button>\n        </div>\n      </div>\n    </form>\n    <div class="alert" ng-show="vm.result" ng-class="{\'alert-success\': vm.result.status === 1,\'alert-error\': vm.result.status === 0}">\n      {$ vm.result.msg $}\n    </div>\n  </div>\n</div>')}]),angular.module("xos.contentProvider").run(["$location",function(n){n.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosDashboardManager.js b/xos/core/xoslib/static/js/xosDashboardManager.js
index 5a80edd..8e89986 100644
--- a/xos/core/xoslib/static/js/xosDashboardManager.js
+++ b/xos/core/xoslib/static/js/xosDashboardManager.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.dashboardManager",["ngResource","ngCookies","ui.router","xos.helpers","dndLists"]).config(["$stateProvider",function(e){e.state("manage-user-dashboards",{url:"/",template:"<user-dashboards></user-dashboards>"}).state("add-dashboards",{url:"/add",template:"<dashboard-form></dashboard-form>"}).state("edit-dashboards",{url:"/dashboards/:id",template:"<dashboard-form></dashboard-form>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).service("UserDashboards",["$http","$q",function(e,n){this.query=function(){var s=n.defer();return e.get("/api/utility/dashboards").then(function(e){s.resolve(e.data)})["catch"](function(e){s.reject(e)}),{$promise:s.promise}},this.update=function(s){var a=n.defer();return e.post("/api/utility/dashboards/",s).then(function(e){a.resolve(e.data)})["catch"](function(e){a.reject(e)}),{$promise:a.promise}}}]);var _slicedToArray=function(){function e(e,n){var s=[],a=!0,i=!1,o=void 0;try{for(var r,t=e[Symbol.iterator]();!(a=(r=t.next()).done)&&(s.push(r.value),!n||s.length!==n);a=!0);}catch(d){i=!0,o=d}finally{try{!a&&t["return"]&&t["return"]()}finally{if(i)throw o}}return s}return function(n,s){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return e(n,s);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){angular.module("xos.dashboardManager").directive("userDashboards",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/user-dashboards.tpl.html",controller:["$q","_","UserDashboards","Dashboards",function(e,n,s,a){var i=this;e.all([s.query().$promise,a.query({enabled:"False"}).$promise]).then(function(e){var s=_slicedToArray(e,2),a=s[0],o=s[1];i.disabled=o,i.list={enabled:n.filter(a,{shown:!0}),disabled:n.filter(a,{shown:!1})}})["catch"](function(e){throw new Error(e)}),this.removeFromList=function(e,s){n.remove(i.list[e],{id:s})},this.addToList=function(e,n){i.list[e].push(n),location.reload()},this.isInList=function(e,s){return n.find(i.list[e],s)},this.reorderList=function(e,s,a,i){var o=n.filter(e,function(e){return e.id!==i.id&&(e.order<a||e.order>=s)});o=o.map(function(e){return e.order++,e})},this.addedToList=function(e,n,a,o,r){var t=void 0,d=i.isInList(r,a);d?(t=a.order,d.order=n,a.order=n):(a.order=i.list[r].length,a.shown=!a.shown);var l="enabled"===r?"disabled":"enabled";s.update(a).$promise.then(function(e){d?i.reorderList(i.list[r],n,t,e):(i.addToList(r,e),i.removeFromList(l,e.id))})}}]}})}(),angular.module("xos.dashboardManager").run(["$templateCache",function(e){e.put("templates/dashboard-form.tpl.html",'<div class="row">\n  <div class="col-xs-10">\n    <h1>Manage Dashboard</h1>\n  </div>\n  <div class="col-xs-2 text-right">\n    <a ui-sref="manage-user-dashboards" class="btn btn-success">Back</a>\n  </div>\n</div>\n<div class="row">\n  <div class="col-xs-12">\n    <xos-form ng-model="vm.dashboard" config="vm.formConfig"></xos-form>\n  </div>\n</div>\n<div class="row" ng-show="vm.tosca">\n  <div class="col-sm-6">\n    <div class="row">\n      <div class="col-xs-12">\n        <xos-alert show="true" config="{type: \'info\'}">\n          Include this lines in a TOSCA recipe to load the {{vm.dashboard.name}} dashboard in the system.\n        </xos-alert>\n      </div>\n      <div class="col-xs-12">\n        <pre>{{vm.tosca}}</pre>\n      </div>\n    </div>\n  </div>\n  <div class="col-sm-6">\n    <div class="row">\n      <div class="col-xs-12">\n        <xos-alert show="true" config="{type: \'info\'}">\n          Add this lines as a requirement for the user in a TOSCA recipe to assign the {{vm.dashboard.name}} to the user.\n        </xos-alert>\n      </div>\n      <div class="col-xs-12">\n        <pre>{{vm.toscaRequirements}}</pre>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("templates/user-dashboards.tpl.html",'<div class="row">\n  <div class="col-xs-10">\n    <h1>Manage Your Dashboards</h1>\n  </div>\n  <div class="col-xs-2 text-right">\n    <a ui-sref="add-dashboards" class="btn btn-success">Add</a>\n  </div>\n</div>\n\n<div class="row">\n  <div class="col-xs-6">\n    <div class="panel panel-primary">\n      <div class="panel-heading">\n        <h3 class="panel-title">\n          Available Dashboards\n        </h3>\n      </div>\n      <div class="panel-body">\n        <ul dnd-list="vm.list.disabled"\n          dnd-drop="vm.addedToList(event, index, item, external, \'disabled\')">\n          <li ng-repeat="item in vm.list.disabled"\n            dnd-moved="vm.removeFromList(\'disabled\', item.id)"\n            dnd-draggable="item">\n            <a ui-sref="edit-dashboards({id: item.id,})">\n              <img src="/static/images/{{item.icon}}"></img>\n              {{item.name}}\n              <i class="glyphicon glyphicon-pencil"></i>\n            </a>\n          </li>\n        </ul>\n      </div>\n    </div>\n  </div>\n  <div class="col-xs-6">\n    <div class="panel panel-primary">\n      <div class="panel-heading">\n        <h3 class="panel-title">\n          Enabled Dashboards\n        </h3>\n      </div>\n      <div class="panel-body">\n        <ul dnd-list="vm.list.enabled"\n          dnd-drop="vm.addedToList(event, index, item, external, \'enabled\')">\n          <li ng-repeat="item in vm.list.enabled | orderBy : \'order\'"\n            dnd-moved="vm.removeFromList(\'enabled\', item.id)"\n            dnd-draggable="item">\n            <a ui-sref="edit-dashboards({id: item.id,})">\n              <img src="/static/images/{{item.icon}}"></img>\n              {{item.name}}\n              <i class="glyphicon glyphicon-pencil"></i>\n            </a>\n          </li>\n        </ul>\n      </div>\n    </div>\n  </div>\n</div>\n<div class="row" ng-show="vm.disabled.length > 0">\n  <div class="col-xs-12">\n    <h1>Disabled Dashboard</h1>\n  </div>\n  <div class="col-xs-12">\n    <div class="row">\n      <div class="col-sm-2" ng-repeat="item in vm.disabled | orderBy : \'id\'">\n        <span class="dashboard-container">\n          <a ui-sref="edit-dashboards({id: item.id,})">\n            <img src="/static/images/{{item.icon}}"></img>\n            {{item.name}}\n            <i class="glyphicon glyphicon-pencil"></i>\n          </a>\n        </span>\n      </div>\n    </div>\n  </div>\n</div>\n'),e.put("templates/users-list.tpl.html",'<xos-table config="vm.tableConfig" data="vm.users"></xos-table>')}]),function(){angular.module("xos.dashboardManager").directive("dashboardForm",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/dashboard-form.tpl.html",controller:["$stateParams","$log","Dashboards",function(e,n,s){var a=this;this.dashboard={enabled:!0},e.id&&s.get({id:e.id}).$promise.then(function(e){a.dashboard=e})["catch"](function(e){console.log(e)}),this.formConfig={exclude:["backend_register","controllers","deployments","enacted","humanReadableName","lazy_blocked","no_policy","no_sync","policed","write_protect","icon","icon_active"],actions:[{label:"Save",icon:"ok",cb:function(e,n){if(n.$valid){if(e.name&&e.url&&e.custom_icon){var s=e.url.indexOf("xos");if(s>=0){var i=e.url.slice(s+3,e.url.length).toLowerCase();e.icon=i.concat("-icon.png"),e.icon_active=i.concat("-icon-active.png")}else e.icon="default-icon.png",e.icon_active="default-icon-active.png"}else e.icon="default-icon.png",e.icon_active="default-icon-active.png";a.createOrUpdateDashboard(e)}},"class":"success"},{label:"Esport to TOSCA",icon:"export",cb:function(e){a.toTosca(e)},"class":"primary"}],formName:"dashboardForm",feedback:{show:!1,message:"Form submitted successfully !!!",type:"success"},fields:{name:{type:"string",validators:{required:!0}},url:{type:"string",validators:{required:!0}},enabled:{type:"boolean"},custom_icon:{type:"boolean"}}},this.createOrUpdateDashboard=function(e){var i=void 0;e.id?(delete e.controllers,delete e.deployments,i=e.$save()):i=s.save(e).$promise,i.then(function(e){a.formConfig.feedback.show=!0})["catch"](function(e){n.info(e),a.formConfig.feedback.show=!0,a.formConfig.feedback.message=e,a.formConfig.feedback.type="danger"})},this.toTosca=function(e){var n={};n[e.name]={type:"tosca.nodes.DashboardView",properties:{url:e.url}},a.tosca=jsyaml.dump(n).replace(/'/g,"");var s={requirements:[]},i={};i[e.name.toLowerCase()+"_dashboard"]={node:e.name,relationship:"tosca.relationships.UsesDashboard"},s.requirements.push(i),a.toscaRequirements=jsyaml.dump(s).replace(/'/g,"")}}]}})}(),angular.module("xos.dashboardManager").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosDeveloper.js b/xos/core/xoslib/static/js/xosDeveloper.js
index 8585eac..712ea3b 100644
--- a/xos/core/xoslib/static/js/xosDeveloper.js
+++ b/xos/core/xoslib/static/js/xosDeveloper.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.developer",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(e){e.state("developer",{url:"/",template:"<developer-dashboard></developer-dashboard>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).directive("developerDashboard",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/developer-dashboard.tpl.html",controller:["$scope","$timeout","SlicesPlus","Instances","_",function(e,t,n,s,i){var r=this;this.instancePerSliceConfig={data:[],groupBy:"slice",legend:!0,classes:"instance per slice",labelFormatter:function(e){return e.map(function(e){return i.find(r.slices,{id:parseInt(e)}).name})}},this.instancePerSiteConfig={data:[],groupBy:"site",legend:!0,classes:"instance per site"},this.networkPerSliceConfig={data:[],groupBy:"name",legend:!0,classes:"network per slice"},this.tableConfig={columns:[{label:"Name",prop:"name"},{label:"Privileges",prop:"current_user_roles",type:"array"},{label:"Number of Instances (active / total)",type:"custom",formatter:function(e){return e.instance_total_ready+" / "+e.instance_total}},{label:"Active Instances per Sites",type:"object",prop:"instance_distribution_ready"},{label:"Total Instances per Sites",type:"object",prop:"instance_distribution"},{label:"Networks",type:"custom",formatter:function(e){return e.networks.length}}]},n.query().$promise.then(function(e){return r.slices=e,s.query().$promise}).then(function(e){var t=i.reduce(r.slices,function(e,t){if(t.networks.length>1)for(var n=0;n<t.networks.length;n++)e.push({id:t.id,name:t.name,network:t.networks[n]});else 1===t.networks.length&&e.push({id:t.id,name:t.name,network:t.networks[0]});return e},[]),n=i.reduce(r.slices,function(e,t){return i.forEach(Object.keys(t.instance_distribution),function(n){for(var s=0;s<t.instance_distribution[n];s++)e.push({site:n,instance:s})}),e},[]);r.sites=Object.keys(i.groupBy(n,"site")),r.instancePerSliceConfig.data=e,r.instancePerSiteConfig.data=n,r.networkPerSliceConfig.data=t})["catch"](function(e){throw new Error(e)})}]}}),angular.module("xos.developer").run(["$templateCache",function(e){e.put("templates/developer-dashboard.tpl.html",'<div class="row">\n  <div ng-class="{\'col-sm-4\': vm.sites.length > 1 || !vm.sites, \'col-sm-6\': vm.sites.length <= 1}" class="text-center">\n    <h3>Instances per Slice</h3>\n    <xos-smart-pie ng-if="vm.instancePerSliceConfig.data.length > 0" config="vm.instancePerSliceConfig"></xos-smart-pie>\n  </div>\n  <div ng-if="vm.sites.length > 1" class="col-sm-4 text-center">\n    <h3>Instances per Site</h3>\n    <xos-smart-pie ng-if="vm.instancePerSiteConfig.data.length > 0" config="vm.instancePerSiteConfig"></xos-smart-pie>\n  </div>\n  <div ng-class="{\'col-sm-4\': vm.sites.length > 1 || !vm.sites, \'col-sm-6\': vm.sites.length <= 1}" class="text-center">\n    <h3>Network per Slice</h3>\n    <xos-smart-pie ng-if="vm.networkPerSliceConfig.data.length > 0" config="vm.networkPerSliceConfig"></xos-smart-pie>\n  </div>\n</div>\n\n<xos-table config="vm.tableConfig" data="vm.slices"></xos-table>')}]),angular.module("xos.developer").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosDiagnostic.js b/xos/core/xoslib/static/js/xosDiagnostic.js
index 3929f6e..9280b33 100644
--- a/xos/core/xoslib/static/js/xosDiagnostic.js
+++ b/xos/core/xoslib/static/js/xosDiagnostic.js
@@ -1,2 +1,20 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";!function(){angular.module("xos.diagnostic",["ngResource","ngCookies","ngAnimate","ui.router","xos.helpers"]).config(["$stateProvider",function(e){e.state("home",{url:"/",template:"<diagnostic-container></diagnostic-container>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).run(["$log",function(e){e.info("Diagnostic Started")}])}(),angular.module("xos.diagnostic").run(["$templateCache",function(e){e.put("templates/diagnostic.tpl.html",'<div class="container-fluid">\n  <div ng-hide="vm.error && vm.loader" style="height: 900px">\n    <div class="onethird-height">\n      <div class="well">\n        Services Graph\n      </div>\n      <div class="well pull-right" ng-click="vm.reloadGlobalScope()" ng-show="vm.selectedSubscriber">\n        Reset subscriber\n      </div>\n      <service-topology service-chain="vm.serviceChain"></service-topology>\n    </div>\n    <div class="twothird-height">\n      <div class="well">\n        Logical Resources\n      </div>\n      <logic-topology ng-if="vm.subscribers" subscribers="vm.subscribers" selected="vm.selectedSubscriber"></logic-topology>\n    </div>\n  </div>\n  <div class="row" ng-if="vm.error">\n    <div class="col-xs-12">\n      <div class="alert alert-danger">\n        {{vm.error}}\n      </div>\n    </div>\n  </div>\n  <div class="row" ng-if="vm.loader">\n    <div class="col-xs-12">\n      <div class="loader">Loading</div>\n    </div>\n  </div>\n</div>'),e.put("templates/logicTopology.tpl.html",'<select-subscriber-modal open="vm.openSelectSubscriberModal" subscribers="vm.subscribers"></select-subscriber-modal>\n<subscriber-status-modal open="vm.openSubscriberStatusModal" subscriber="vm.currentSubscriber"></subscriber-status-modal>\n<div class="alert alert-danger animate" ng-hide="!vm.error">\n  {{vm.error}}\n</div>\n<!-- <div class="instances-stats animate" ng-hide="vm.hideInstanceStats">\n  <div class="row">\n    <div class="col-sm-3 col-sm-offset-8">\n      <div class="panel panel-primary" ng-repeat="instance in vm.selectedInstances">\n        <div class="panel-heading">\n          {{instance.humanReadableName}}\n        </div>\n          <ul class="list-group">\n            <li class="list-group-item">Backend Status: {{instance.backend_status}}</li>\n            <li class="list-group-item">IP Address: {{instance.ip}}</li>\n          </ul>\n          <ul class="list-group">\n            <li class="list-group-item" ng-repeat="stat in instance.stats">\n              <span class="badge">{{stat.value}}</span>\n              {{stat.meter}}\n            </li>\n          </ul>\n        </div>\n      </div>  \n    </div>\n  </div>\n</div> -->'),e.put("templates/select-subscriber-modal.tpl.html",'<div class="modal fade" ng-class="{in: vm.open}" tabindex="-1" role="dialog">\n  <div class="modal-dialog modal-sm">\n    <div class="modal-content">\n      <div class="modal-header">\n        <button ng-click="vm.close()"  type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>\n        <h4 class="modal-title">Select a subscriber:</h4>\n      </div>\n      <div class="modal-body">\n        <select class="form-control" ng-options="s as s.humanReadableName for s in vm.subscribers" ng-model="vm.selected"></select>\n      </div>\n      <div class="modal-footer">\n        <button ng-click="vm.close()" type="button" class="btn btn-default" data-dismiss="modal">Close</button>\n        <button ng-click="vm.select(vm.selected)" type="button" class="btn btn-primary">Select</button>\n      </div>\n    </div><!-- /.modal-content -->\n  </div><!-- /.modal-dialog -->\n</div><!-- /.modal -->'),e.put("templates/subscriber-status-modal.tpl.html",'<div class="modal fade" ng-class="{in: vm.open}" tabindex="-1" role="dialog">\n  <div class="modal-dialog modal-sm">\n    <div class="modal-content">\n      <div class="modal-header">\n        <button ng-click="vm.close()"  type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>\n        <h4 class="modal-title">Manage subscriber:</h4>\n      </div>\n      <form name="vm.subscriber-detail">\n        <div class="modal-body">\n          <div class="row">\n            <div class="col-xs-12">\n              <label>Status</label>\n            </div>\n            <div class="col-xs-6">\n              <a ng-click="vm.subscriber.features.status = \'enabled\'"\n                class="btn btn-block"\n                ng-class="{\'btn-primary\': vm.subscriber.features.status === \'enabled\' ,\'btn-default\': vm.subscriber.features.status !== \'enabled\'}"\n                >Enabled</a>\n            </div>\n            <div class="col-xs-6">\n              <a ng-click="vm.subscriber.features.status = \'suspended\'"\n                class="btn btn-block"\n                ng-class="{\'btn-primary\': vm.subscriber.features.status === \'suspended\' ,\'btn-default\': vm.subscriber.features.status !== \'suspended\'}"\n                >Suspended</a>\n            </div>\n          </div>\n          <div class="row">\n            <div class="col-xs-6">\n              <a ng-click="vm.subscriber.features.status = \'delinquent\'"\n                class="btn btn-block"\n                ng-class="{\'btn-primary\': vm.subscriber.features.status === \'delinquent\' ,\'btn-default\': vm.subscriber.features.status !== \'delinquent\'}"\n                >Delinquent <br> payment</a>\n            </div>\n            <div class="col-xs-6">\n              <a ng-click="vm.subscriber.features.status = \'copyrightviolation\'"\n                class="btn btn-block"\n                ng-class="{\'btn-primary\': vm.subscriber.features.status === \'copyrightviolation\' ,\'btn-default\': vm.subscriber.features.status !== \'copyrightviolation\'}"\n                >Copyright <br> violation</a>\n            </div>\n          </div>\n          <div class="row">\n            <div class="col-xs-6">\n              <label>Uplink Speed</label>\n              <div class="input-group">\n                <input type="number" class="form-control small-padding" ng-model="vm.subscriber.features.uplink_speed"/>\n                <span class="input-group-addon">Mbps</span>\n              </div>\n            </div>\n            <div class="col-xs-6">\n              <label>Downlink Speed</label>\n              <div class="input-group">\n                <input type="number" class="form-control small-padding" ng-model="vm.subscriber.features.downlink_speed"/>\n                <span class="input-group-addon">Mbps</span>\n              </div>\n            </div>\n          </div>\n          <div class="row">\n            <div class="col-xs-6">\n              <label>Enable Internet</label>\n            </div>\n            <div class="col-xs-6">\n              <a \n                ng-click="vm.subscriber.features.uverse = !vm.subscriber.features.uverse"\n                ng-class="{\'btn-success\': vm.subscriber.features.enable_uverse, \'btn-danger\': !vm.subscriber.features.enable_uverse}"\n                class="btn btn-block">\n                <span ng-show="vm.subscriber.features.uverse === true">Enabled</span>\n                <span ng-show="vm.subscriber.features.uverse !== true">Disabled</span>\n              </a>\n            </div>\n          </div>\n        </div>\n        <div class="modal-footer" ng-show="vm.success || vm.formError">\n          <div class="alert alert-success" ng-show="vm.success">\n            {{vm.success}}\n          </div>\n          <div class="alert alert-danger" ng-show="vm.formError">\n            {{vm.formError}}\n          </div>\n        </div>\n        <div class="modal-footer">\n          <button ng-click="vm.close()" type="button" class="btn btn-default" data-dismiss="modal">Close</button>\n          <button ng-click="vm.updateSubscriber(vm.subscriber)" type="button" class="btn btn-primary">Save</button>\n        </div>\n      </form>\n    </div><!-- /.modal-content -->\n  </div><!-- /.modal-dialog -->\n</div><!-- /.modal -->')}]),function(){angular.module("xos.diagnostic").directive("selectSubscriberModal",function(){return{scope:{subscribers:"=",open:"="},bindToController:!0,restrict:"E",templateUrl:"templates/select-subscriber-modal.tpl.html",controllerAs:"vm",controller:["$rootScope",function(e){var t=this;this.close=function(){t.open=!1},this.select=function(n){e.$emit("subscriber.selected",n),t.close()}}]}}).directive("subscriberStatusModal",function(){return{scope:{open:"=",subscriber:"="},bindToController:!0,restrict:"E",templateUrl:"templates/subscriber-status-modal.tpl.html",controllerAs:"vm",controller:["$log","$timeout","$scope","Subscribers",function(e,t,n,r){var i=this,a=1e6;n.$watch(function(){return i.open},function(){i.success=null,i.formError=null}),n.$watch(function(){return i.subscriber},function(e,t){i.subscriber&&(i.subscriber.features.uplink_speed=parseInt(i.subscriber.features.uplink_speed,10)/a,i.subscriber.features.downlink_speed=parseInt(i.subscriber.features.downlink_speed,10)/a)}),this.close=function(){i.open=!1},this.updateSubscriber=function(e){var n=angular.copy(e,n);n.features.uplink_speed=n.features.uplink_speed*a,n.features.downlink_speed=n.features.downlink_speed*a,delete n.related,r.update(n).$promise.then(function(e){i.success="Subscriber successfully updated!"})["catch"](function(e){i.formError=e})["finally"](function(){t(function(){i.close()},1500)})}}]}})}(),function(){angular.module("xos.diagnostic").service("ServiceTopologyHelper",["$rootScope","$window","$log","_","ServiceRelation","serviceTopologyConfig","d3",function(e,t,n,r,i,a,s){var c,o,u,l,d=0,p=function(t,n,r){var p=arguments.length<=3||void 0===arguments[3]?l:arguments[3];p&&(l=p);var f=l.clientWidth-2*a.widthMargin;c=t,o=n,u=r;var h=i.depthOf(r),m=s.svg.diagonal().projection(function(e){return[e.y,e.x]}),g=n.nodes(r).reverse(),b=n.links(g);g.forEach(function(e){var t=(f-2*a.widthMargin)/(h-1);e.y=e.depth*t});var y=t.selectAll("g.node").data(g,function(e){return e.id||(e.id=++d)}),x=y.enter().append("g").attr({"class":function(e){return"node "+e.type},transform:function(e){return e.x&&e.y?"translate("+e.y+", "+e.x+")":"translate("+r.y0+", "+r.x0+")"}}),S=x.filter(".subscriber"),w=x.filter(".router"),T=x.filter(".service");S.append("rect").attr(a.square).on("click",function(){e.$emit("subscriber.modal.open")}),w.append("rect").attr(a.square),T.append("circle").attr("r",1e-6).style("fill",function(e){return e._children?"lightsteelblue":"#fff"}).on("click",v),x.append("text").attr({x:function(e){return e.children?-a.circle.selectedRadius-5:a.circle.selectedRadius+5},dy:".35em",y:function(e){if(e.children&&e.parent)return"-5"},transform:function(e){if(e.children&&e.parent)return e.parent.x<e.x?"rotate(-30)":"rotate(30)"},"text-anchor":function(e){return e.children?"end":"start"}}).text(function(e){return e.name}).style("fill-opacity",1e-6);var _=y.transition().duration(a.duration).attr({transform:function(e){return"translate("+e.y+","+e.x+")"}});_.select("circle").attr("r",function(e){return e.selected?a.circle.selectedRadius:a.circle.radius}).style("fill",function(e){return e.selected?"lightsteelblue":"#fff"}),_.select("text").style("fill-opacity",1);var C=y.exit().transition().duration(a.duration).remove();C.select("circle").attr("r",1e-6),C.select("text").style("fill-opacity",1e-6);var k=t.selectAll("path.link").data(b,function(e){return e.target.id});k.enter().insert("path","g").attr("class",function(e){return"link "+e.target.type+" "+(e.target.active?"":"active")}).attr("d",function(e){var t={x:r.x0,y:r.y0};return m({source:t,target:t})}),k.transition().duration(a.duration).attr("d",m),k.exit().transition().duration(a.duration).attr("d",function(e){var t={x:r.x,y:r.y};return m({source:t,target:t})}).remove(),g.forEach(function(e){e.x0=e.x,e.y0=e.y})},v=function(t){return t.selected?(t.selected=!t.selected,e.$emit("instance.detail.hide",{}),p(c,o,u)):(e.$emit("instance.detail",{name:t.name,service:t.service,tenant:t.tenant}),c.selectAll("circle").each(function(e){return e.selected=!1}),t.selected=!t.selected,void p(c,o,u))};this.updateTree=p}])}(),function(){angular.module("xos.diagnostic").directive("serviceTopology",function(){return{restrict:"E",scope:{serviceChain:"="},bindToController:!0,controllerAs:"vm",template:"",controller:["$element","$window","$scope","d3","serviceTopologyConfig","ServiceRelation","Instances","Subscribers","ServiceTopologyHelper",function(e,t,n,r,i,a,s,c,o){var u=this,l=e[0];r.select(window).on("resize.service",function(){v(u.serviceChain)});var d,p,v=function(t){if(!t)return void console.error("Tree is missing");r.select(e[0]).select("svg").remove();var n=l.clientWidth-2*i.widthMargin,a=l.clientHeight-2*i.heightMargin,s=r.layout.tree().size([a,n]);p=r.select(e[0]).append("svg").style("width",l.clientWidth+"px").style("height",l.clientHeight+"px");var c=p.append("g").attr("transform","translate("+2*i.widthMargin+","+i.heightMargin+")");d=t,d.x0=a/2,d.y0=n/2,o.updateTree(c,s,d,l)};n.$watch(function(){return u.serviceChain},function(e){angular.isDefined(e)&&v(e)})}]}})}(),function(){angular.module("xos.diagnostic").service("Services",["$resource",function(e){return e("/api/core/services/:id",{id:"@id"})}]).service("Tenant",["$resource",function(e){return e("/api/core/tenants",{id:"@id"},{queryVsgInstances:{method:"GET",isArray:!0,interceptor:{response:function(e){var t=[];return angular.forEach(e.data,function(e){var n=JSON.parse(e.service_specific_attribute);n&&n.instance_id&&t.push(n.instance_id)}),t}}},getSubscriberTag:{method:"GET",isArray:!0,interceptor:{response:function(e){return JSON.parse(e.data[0].service_specific_attribute)}}}})}]).service("Ceilometer",["$http","$q","Instances",function(e,t,n){var r=this;this.getInstanceStats=function(n){var r=t.defer();return e.get("/xoslib/xos-instance-statistics",{params:{"instance-uuid":n}}).then(function(e){r.resolve(e.data)})["catch"](function(e){r.reject(e)}),r.promise},this.getInstancesStats=function(e){var i=t.defer(),a=[],s=[];return e.forEach(function(e){a.push(n.get({id:e}).$promise)}),t.all(a).then(function(e){s=e;var n=[];return s.forEach(function(e){n.push(r.getInstanceStats(e.instance_uuid))}),t.all(n)}).then(function(e){s.map(function(t,n){t.stats=e[n]}),i.resolve(s)})["catch"](i.reject),i.promise},this.getContainerStats=function(n){var r=t.defer(),i={};return e.get("/xoslib/meterstatistics",{params:{resource:n}}).then(function(t){return i.stats=t.data,e.get("/xoslib/meterstatistics",{params:{resource:n+"-eth0"}})}).then(function(t){return i.port={eth0:t.data},e.get("/xoslib/meterstatistics",{params:{resource:n+"-eth1"}})}).then(function(e){i.port.eth1=e.data,r.resolve(i)})["catch"](function(e){r.reject(e)}),r.promise}}]).service("Slice",["$resource",function(e){return e("/api/core/slices",{id:"@id"})}]).service("Instances",["$resource",function(e){return e("/api/core/instances/:id",{id:"@id"})}]).service("Node",["$resource","$q","Instances",function(e,t,n){return e("/api/core/nodes",{id:"@id"},{queryWithInstances:{method:"GET",isArray:!0,interceptor:{response:function(e){var r=t.defer(),i=[];return angular.forEach(e.data,function(e){i.push(n.query({node:e.id}).$promise)}),t.all(i).then(function(t){e.data.map(function(e,n){return e.instances=t[n],e}),r.resolve(e.data)}),r.promise}}}})}]).service("SubscribersWithDevice",["$http","$q","Subscribers",function(e,t,n){this.get=function(r){var i=t.defer(),a=void 0;return n.get({id:r.id}).$promise.then(function(t){return a=t,e.get("/api/tenant/cord/subscriber/"+a.id+"/devices/")}).then(function(e){e.data.map(function(e){return e.type="device"}),a.devices=e.data,a.type="subscriber",i.resolve(a)})["catch"](function(e){i.reject(e)}),{$promise:i.promise}}}]).service("ServiceRelation",["$q","_","Services","Tenant","Slice","Instances",function(e,t,n,r,i,a){var s=function h(e){var t=0;return e.children&&e.children.forEach(function(e){var n=h(e);n>t&&(t=n)}),1+t},c=function(e,n){return t.filter(e,function(e){return e.subscriber_service===n})},o=function(e,n){var r,e=t.filter(e,function(e){return e.provider_service===n&&e.subscriber_tenant});return e.forEach(function(e){e.service_specific_attribute&&(r=JSON.parse(e.service_specific_attribute))}),r},u=function(e,n){var r=[];return t.forEach(e,function(e){var i=t.find(n,{id:e.provider_service});r.push(i)}),r},l=function m(e,n,r,i){var a=arguments.length<=4||void 0===arguments[4]?null:arguments[4],s=t.difference(n,[r]),l=c(e,r.id),d=u(l,n);s=t.difference(s,d),r.service_specific_attribute=o(e,r.id),"service_vbng"===r.humanReadableName&&(r.humanReadableName="service_vrouter");var p={name:r.humanReadableName,parent:a,type:"service",service:r,tenant:i,children:[]};return t.forEach(d,function(n){if("service_ONOS_vBNG"!==n.humanReadableName&&"service_ONOS_vOLT"!==n.humanReadableName){var a=t.find(e,{subscriber_tenant:i.id,provider_service:n.id});p.children.push(m(e,s,n,a,r.humanReadableName))}}),0===p.children.length&&p.children.push({name:"Router",type:"router",children:[]}),p},d=function(e,n){var r=arguments.length<=2||void 0===arguments[2]?{id:1,name:"fakeSubs"}:arguments[2],i=t.find(n,{subscriber_root:r.id}),a=t.find(e,{id:i.provider_service}),s=l(n,e,a,i);return{name:r.name||r.humanReadableName,parent:null,type:"subscriber",children:[s]}},p=function(e,n){var r=function s(e,n,r){"service_vbng"===r.humanReadableName&&(r.humanReadableName="service_vrouter");var i={type:"service",name:r.humanReadableName,service:r},a=t.find(n,{subscriber_service:r.id});if(a){var c=t.find(e,{id:a.provider_service});i.children=[s(e,n,c)]}else i.children=[{name:"Router",type:"router",children:[]}];return delete r.id,i},i=t.find(e,{id:3});if(!angular.isDefined(i))return void console.error("Missing Base service!");var a={name:"Subscriber",type:"subscriber",parent:null,children:[r(e,n,i)]};return a},v=function(t){var i,a,s=e.defer();return n.query().$promise.then(function(e){return i=e,r.query().$promise}).then(function(e){a=e,s.resolve(d(i,a,t))})["catch"](function(e){throw new Error(e)}),s.promise},f=function(){var t,i,a=e.defer();return n.query().$promise.then(function(e){return t=e,r.query({kind:"coarse"}).$promise}).then(function(e){i=e,a.resolve(p(t,i))})["catch"](function(e){throw new Error(e)}),a.promise};return{get:f,buildServiceTree:p,getBySubscriber:v,buildLevel:l,buildSubscriberServiceTree:d,findLevelRelation:c,findLevelServices:u,depthOf:s,findSpecificInformation:o}}])}();var _slicedToArray=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(r=(s=c.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(o){i=!0,a=o}finally{try{!r&&c["return"]&&c["return"]()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){angular.module("xos.diagnostic").service("RackHelper",["serviceTopologyConfig","_",function(e,t){var n=this;this.getComputeNodeLabelSize=function(){return e.computeNode.labelHeight+2*e.instance.margin},this.getComputeNodeSize=t.memoize(function(t){var r=3*e.instance.margin+2*e.instance.width,i=Math.round(t.length/2),a=n.getComputeNodeLabelSize(),s=e.instance.height*i+e.instance.margin*(i+1)+a;return[r,s]}),this.getRackSize=function(r){var i=0,a=e.computeNode.margin;return t.forEach(r,function(t){var r=n.getComputeNodeSize(t.instances),s=_slicedToArray(r,2),c=s[0],o=s[1];i=c+2*e.computeNode.margin,a+=o+e.computeNode.margin}),[i,a]},this.getInstancePosition=function(t){var r=Math.floor(t/2),i=t%2?1:0,a=n.getComputeNodeLabelSize(),s=e.instance.margin+e.instance.width*i+e.instance.margin*i,c=a+e.instance.margin+e.instance.height*r+e.instance.margin*r;return[s,c]},this.getComputeNodePosition=function(r,i){var a=e.computeNode.margin,s=t.reduce(r.slice(0,i),function(e,t){return e+n.getComputeNodeSize(t.instances)[1]},0),c=e.computeNode.margin+e.computeNode.margin*i+s;return[a,c]}}])}();var _slicedToArray=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(r=(s=c.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(o){i=!0,a=o}finally{try{!r&&c["return"]&&c["return"]()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){var e={cloud:" M 79.72 49.60 C 86.00 37.29 98.57 29.01 111.96 26.42 C 124.27 24.11 137.53 26.15 148.18 32.90 C 158.08 38.78 165.39 48.87 167.65 60.20 C 176.20 57.90 185.14 56.01 194.00 57.73 C 206.08 59.59 217.92 66.01 224.37 76.66 C 227.51 81.54 228.85 87.33 229.23 93.06 C 237.59 93.33 246.22 95.10 253.04 100.19 C 256.69 103.13 259.87 107.67 258.91 112.59 C 257.95 118.43 252.78 122.38 247.78 124.82 C 235.27 130.43 220.23 130.09 207.98 123.93 C 199.33 127.88 189.76 129.43 180.30 128.57 C 173.70 139.92 161.70 147.65 148.86 149.93 C 133.10 153.26 116.06 148.15 104.42 137.08 C 92.98 143.04 78.96 143.87 66.97 139.04 C 57.75 135.41 49.70 128.00 46.60 118.43 C 43.87 109.95 45.81 100.29 51.30 93.32 C 57.38 85.18 67.10 80.44 76.99 78.89 C 74.38 69.20 74.87 58.52 79.72 49.60 Z"},t=0,n=0;angular.module("xos.diagnostic").service("NodeDrawer",["d3","serviceTopologyConfig","RackHelper","_",function(r,i,a,s){var c=this,o=this;this.addNetworks=function(t){t.selectAll("*").remove(),t.append("path").attr({d:e.cloud,transform:"translate(-100, -72), scale(0.7)","class":"cloud"}),t.append("text").attr({"text-anchor":"middle",y:-5,x:5}).text(function(e){return e.name}),t.append("text").attr({"text-anchor":"middle",y:8,x:5,"class":"small"}).text(function(e){return e.subtitle}),t.each(function(e){var t=r.select(this);"LAN-Side"===e.name&&angular.isDefined(e.subscriberTag)&&(t.append("text").attr({"text-anchor":"middle",y:50}).text(function(){return"C-Tag: "+e.subscriberTag.cTag}),t.append("text").attr({"text-anchor":"middle",y:70}).text(function(){return"S-Tag: "+e.subscriberTag.sTag})),"WAN-Side"===e.name&&angular.isDefined(e.subscriberIP)&&t.append("text").attr({"text-anchor":"middle",y:50}).text(function(){return"Public IP: "+e.subscriberIP})})},this.addRack=function(e){e.each(function(t){var n=a.getRackSize(t.computeNodes),r=_slicedToArray(n,2),s=r[0],o=r[1];e.select("g").remove();var u=e.append("g");u.attr({transform:"translate(0,0)"}).transition().duration(i.duration).attr({transform:function(){return"translate("+-(s/2)+", "+-(o/2)+")"}}),u.append("rect").attr({width:0,height:0}).transition().duration(i.duration).attr({width:s,height:o}),u.append("text").attr({"text-anchor":"middle",y:-10,x:s/2,opacity:0}).text(function(e){return e.name}).transition().duration(i.duration).attr({opacity:1}),c.drawComputeNodes(u,t.computeNodes)})},this.drawComputeNodes=function(e,n){var s=e.selectAll(".compute-nodes").data(n,function(e){return angular.isString(e.d3Id)||(e.d3Id="compute-node-"+ ++t),e.d3Id}),c=e.node().getBoundingClientRect(),u=c.width,l=c.height,d=s.enter().append("g");d.attr({transform:"translate("+u/2+", "+l/2+")","class":"compute-node"}).transition().duration(i.duration).attr({transform:function(e){return"translate("+a.getComputeNodePosition(n,e.d3Id.replace("compute-node-","")-1)+")"}}),d.append("rect").attr({width:0,height:0}).transition().duration(i.duration).attr({width:function(e){return a.getComputeNodeSize(e.instances)[0]},height:function(e){return a.getComputeNodeSize(e.instances)[1]}}),d.append("text").attr({"text-anchor":"start",y:17,x:10,opacity:0}).text(function(e){return e.humanReadableName.split(".")[0]}).transition().duration(i.duration).attr({opacity:1}),d.length>0&&d.each(function(e){o.drawInstances(r.select(this),e.instances)})};var u=function(e){return e.replace("app_","").replace("service_","").replace("mysite_","").replace("_instance","")},l=function(e){function t(e,t){return t.substring(0,e.length)===e}return t("0 - ",e.backend_status)?"provisioning":t("1 - ",e.backend_status)?"good":t("2 - ",e.backend_status)?"bad":""},d=function(e,t){var n=e.append("g").attr({"class":"container",transform:"translate("+i.instance.margin+", 115)"});n.append("rect").attr({width:250-2*i.container.margin,height:i.container.height}),n.append("text").attr({y:20,x:i.instance.margin,"class":"name"}).text(t.name);var r=["memory","memory.usage","cpu_util"];r.forEach(function(e,r){var a=s.find(t.stats,{meter:e});angular.isDefined(a)&&n.append("text").attr({y:40+15*r,x:i.instance.margin,opacity:0}).text(a.description+": "+Math.round(a.value)+" "+a.unit).transition().duration(i.duration).attr({opacity:1})});var a=["eth0","eth1"],c=[{meter:"network.incoming.bytes.rate",label:"Incoming"},{meter:"network.outgoing.bytes.rate",label:"Outgoing"}];a.forEach(function(e,r){0!==t.port[e].length&&(n.append("text").attr({y:90,x:i.instance.margin+120*r,"class":"name"}).text(t.name+"-"+e),c.forEach(function(a,c){var o=s.find(t.port[e],{meter:a.meter});angular.isDefined(o)&&n.append("text").attr({y:105+15*c,x:i.instance.margin+120*r,opacity:0}).text(a.label+": "+Math.round(o.value)+" "+o.unit).transition().duration(i.duration).attr({opacity:1})}))})},p=function(e,t){var n={"mysite_vsg-1":"200, -120","mysite_vsg-2":"-300, 30","mysite_vsg-3":"-300, -250"},a=e.append("g").attr({transform:"translate("+(n[t.humanReadableName]||n["mysite_vsg-1"])+")","class":"stats-container"}).on("click",function(e){e.fade=!e.fade;var t=void 0;t=e.fade?.1:1,r.select(this).transition().duration(i.duration).attr({opacity:t})}),c={"mysite_vsg-1":{x1:-160,y1:120,x2:0,y2:50},"mysite_vsg-2":{x1:250,y1:50,x2:300,y2:-10},"mysite_vsg-3":{x1:250,y1:50,x2:300,y2:270}};a.append("line").attr({x1:function(e){return c[e.humanReadableName].x1||c["mysite_vsg-1"].x1},y1:function(e){return c[e.humanReadableName].y1||c["mysite_vsg-1"].y1},x2:function(e){return c[e.humanReadableName].x2||c["mysite_vsg-1"].x2},y2:function(e){return c[e.humanReadableName].y2||c["mysite_vsg-1"].y2},stroke:"black",opacity:0}).transition().duration(i.duration).attr({opacity:1});var o=110,u=250;t.container&&(o+=i.container.height+2*i.container.margin);a.append("rect").attr({width:u,height:o,opacity:0}).transition().duration(i.duration).attr({opacity:1});a.append("text").attr({y:15,x:i.instance.margin,"class":"name",opacity:0}).text(t.humanReadableName).transition().duration(i.duration).attr({opacity:1}),a.append("text").attr({y:30,x:i.instance.margin,"class":"ip",opacity:0}).text(t.ip).transition().duration(i.duration).attr({opacity:1});var l=["memory","memory.usage","cpu","cpu_util"];l.forEach(function(e,n){var r=s.find(t.stats,{meter:e});r&&a.append("text").attr({y:55+15*n,x:i.instance.margin,opacity:0}).text(r.description+": "+Math.round(r.value)+" "+r.unit).transition().duration(i.duration).attr({opacity:1})}),t.container&&d(a,t.container)};this.drawInstances=function(e,t){var s=e.node().getBoundingClientRect(),c=s.width,o=s.height,d=e.selectAll(".instances").data(t,function(e){return angular.isString(e.d3Id)?e.d3Id:e.d3Id="instance-"+ ++n}),v=d.enter().append("g");v.attr({transform:"translate("+c/2+", "+o/2+")","class":function(e){return"instance "+(e.selected?"active":"")+" "+l(e)}}).transition().duration(i.duration).attr({transform:function(e,t){return"translate("+a.getInstancePosition(t)+")"}}),v.append("rect").attr({width:0,height:0}).transition().duration(i.duration).attr({width:i.instance.width,height:i.instance.height}),v.append("text").attr({"text-anchor":"middle",y:23,x:40,opacity:0}).text(function(e){return u(e.humanReadableName)}).transition().duration(i.duration).attr({opacity:1}),v.each(function(e,t){var n=r.select(this);angular.isDefined(e.stats)&&e.selected&&p(n,e,t)})},this.addPhisical=function(e){e.select("rect").remove(),e.select("text").remove(),e.append("rect").attr(i.square),e.append("text").attr({"text-anchor":"middle",y:i.square.y-10}).text(function(e){return e.name||e.humanReadableName})},this.addDevice=function(e){e.append("circle").attr(i.circle),e.append("text").attr({"text-anchor":"end",x:-i.circle.r-10,y:i.circle.r/2}).text(function(e){return e.name||e.mac})}}])}();var _slicedToArray=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(r=(s=c.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(o){i=!0,a=o}finally{try{!r&&c["return"]&&c["return"]()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){angular.module("xos.diagnostic").service("LogicTopologyHelper",["$window","$log","$rootScope","_","serviceTopologyConfig","NodeDrawer","ChartData",function(e,t,n,r,i,a,s){var c,o,u,l,d,p,v=this,f=0,h=s.logicTopologyData;this.computeElementPosition=function(e){var t=[],n=r.reduce(i.elWidths,function(e,t){return t+e},0),a=e-n-2*i.widthMargin,s=a/(i.elWidths.length-1);return r.forEach(i.elWidths,function(n,a){var c=0;0!==a&&(c=r.reduce(i.elWidths.slice(0,a),function(e,t){return t+e},0));var o=i.widthMargin+s*a+n/2+c;t.push(e-o)}),t};var m=function(e){var t=p.nodes(e);t.forEach(function(e){e.y=v.computeElementPosition(l)[e.depth]});var n=p.links(t);return[t,n]},g=function(e,t){var r=e.selectAll("g.node").data(t,function(e){return angular.isString(e.d3Id)||(e.d3Id="tree-"+ ++f),e.d3Id});r.enter().append("g").attr({"class":function(e){return"node "+e.type},transform:"translate("+l/2+", "+d/2+")"});a.addNetworks(r.filter(".network")),a.addRack(r.filter(".rack")),a.addPhisical(r.filter(".router")),a.addPhisical(r.filter(".subscriber")),a.addDevice(r.filter(".device")),r.filter(".subscriber").on("click",function(){n.$emit("subscriber.modal.open")});r.transition().duration(i.duration).attr({transform:function(e){return"translate("+e.y+","+e.x+")"}}),r.exit().remove()},b=function(e,t){c=d3.svg.diagonal().projection(function(e){return[e.y,e.x]});var n=e.selectAll("path.link").data(t,function(e){return e.target.d3Id});n.enter().insert("path","g").attr("class",function(e){return"link "+e.target.type}).attr("d",function(e){var t={x:d/2,y:l/2};return c({source:t,target:t})}),n.transition().duration(i.duration).attr("d",c),n.exit().remove()};this.setupTree=function(e){l=e.node().getBoundingClientRect().width,d=e.node().getBoundingClientRect().height;var t=l-2*i.widthMargin,n=d-2*i.heightMargin;p=d3.layout.tree().size([n,t])},this.updateTree=function(e){var t=m(h),n=_slicedToArray(t,2);o=n[0],u=n[1],g(e,o),b(e,u)}}])}(),function(){angular.module("xos.diagnostic").directive("logicTopology",function(){return{restrict:"E",scope:{subscribers:"=",selected:"="},bindToController:!0,controllerAs:"vm",templateUrl:"templates/logicTopology.tpl.html",controller:["$element","$log","$scope","$rootScope","$timeout","d3","LogicTopologyHelper","Node","Tenant","Ceilometer","serviceTopologyConfig","ChartData",function(e,t,n,r,i,a,s,c,o,u,l,d){var p=this;t.info("Logic Plane");var v;this.selectedInstances=[],this.hideInstanceStats=!0;var f=this,h=function(t){a.select(e[0]).select("svg").remove(),v=a.select(t).append("svg").style("width",t.clientWidth+"px").style("height",t.clientHeight+"px")},m=function(){d.getLogicTree().then(function(e){s.updateTree(v)})};m(),n.$watch(function(){return p.selected},function(e){e?(d.selectSubscriber(e),s.updateTree(v)):(d.removeSubscriber(),s.updateTree(v))}),r.$on("instance.detail.hide",function(){p.hideInstanceStats=!0,i(function(){p.selectedInstances=[],d.highlightInstances([]),s.updateTree(v)},500)}),r.$on("instance.detail",function(e,t){d.getInstanceStatus(t).then(function(e){s.updateTree(v)})["catch"](function(e){f.error="Service statistics are not available at this time. Please try again later.",i(function(){f.error=null},2e3)})}),a.select(window).on("resize.logic",function(){h(e[0]),s.setupTree(v),s.updateTree(v)}),h(e[0]),s.setupTree(v),this.selectSubscriberModal=function(){p.openSelectSubscriberModal=!0,n.$apply()},this.subscriberStatusModal=function(){p.openSubscriberStatusModal=!0,
 n.$apply()},r.$on("subscriber.modal.open",function(){d.currentSubscriber?(p.currentSubscriber=d.currentSubscriber,p.subscriberStatusModal()):p.selectSubscriberModal()})}]}})}(),function(){angular.module("xos.diagnostic").directive("diagnosticContainer",function(){return{restrict:"E",templateUrl:"templates/diagnostic.tpl.html",controllerAs:"vm",controller:["ChartData","Subscribers","SubscribersWithDevice","ServiceRelation","$rootScope",function(e,t,n,r,i){var a=this;this.loader=!0,this.error=!1;var s=function(){t.query().$promise.then(function(e){return a.subscribers=e,r.get()}).then(function(e){a.serviceChain=e})["catch"](function(e){throw new Error(e)})["finally"](function(){a.loader=!1})};s(),this.reloadGlobalScope=function(){a.selectedSubscriber=null,s()};var c=function(t){r.getBySubscriber(t).then(function(r){return a.serviceChain=r,e.currentServiceChain=r,n.get({id:t.id}).$promise}).then(function(t){a.selectedSubscriber=t,e.currentSubscriber=t})};i.$on("subscriber.selected",function(e,t){c(t)})}]}})}(),function(){angular.module("xos.diagnostic").factory("d3",["$window",function(e){return e.d3}])}(),function(){angular.module("xos.diagnostic").constant("serviceTopologyConfig",{widthMargin:60,heightMargin:30,duration:750,elWidths:[20,104,105,104,20],circle:{radius:10,r:10,selectedRadius:15},square:{width:20,height:20,x:-10,y:-10},rack:{width:105,height:50,x:-30,y:-25},computeNode:{width:50,height:20,margin:5,labelHeight:10,x:-25,y:-10},instance:{width:80,height:36,margin:5,x:-40,y:-18},container:{width:60,height:130,margin:5,x:-30,y:-15}})}(),function(){angular.module("xos.diagnostic").service("ChartData",["$rootScope","$q","_","Tenant","Node","serviceTopologyConfig","Ceilometer","Instances",function(e,t,n,r,i,a,s,c){var o=this;this.currentSubscriber=null,this.currentServiceChain=null,this.logicTopologyData={name:"Router",type:"router",children:[{name:"WAN-Side",subtitle:"Virtual Network",type:"network",children:[{name:"Compute Servers",type:"rack",computeNodes:[],children:[{name:"LAN-Side",subtitle:"Virtual Network",type:"network",children:[{name:"Subscriber",type:"subscriber"}]}]}]}]},this.getLogicTree=function(){var e=t.defer();return i.queryWithInstances().$promise.then(function(t){o.logicTopologyData.children[0].children[0].computeNodes=t,e.resolve(o.logicTopologyData)}),e.promise},this.addSubscriberTag=function(e){o.logicTopologyData.children[0].children[0].children[0].subscriberTag={cTag:e.cTag,sTag:e.sTag}},this.addSubscriber=function(e){return e.children=e.devices,o.logicTopologyData.children[0].children[0].children[0].children=[e],o.logicTopologyData},this.removeSubscriber=function(){o.logicTopologyData.children[0].children[0].children[0].children[0].humanReadableName="Subscriber",o.currentSubscriber=null,160===a.elWidths[a.elWidths.length-1]&&a.elWidths.pop(),delete o.logicTopologyData.children[0].children[0].children[0].subscriberTag,delete o.logicTopologyData.children[0].subscriberIP,o.highlightInstances([]),delete o.logicTopologyData.children[0].children[0].children[0].children[0].children},this.getSubscriberTag=function(e){var t={cTag:e.related.c_tag,sTag:e.related.s_tag};o.addSubscriberTag(t),o.currentSubscriber.tags=t},this.getSubscriberIP=function(e){o.logicTopologyData.children[0].subscriberIP=e.related.wan_container_ip},this.selectSubscriber=function(e){a.elWidths.push(160),o.addSubscriber(angular.copy(e)),o.highlightInstances([]),o.getSubscriberTag(e),o.getSubscriberIP(e)},this.highlightInstances=function(e){var t=o.logicTopologyData.children[0].children[0].computeNodes;t.map(function(e){e.instances.map(function(e){return e.selected=!1,e})}),n.forEach(e,function(e){t.map(function(t){t.instances.map(function(t){return t.id===e.id&&(t.selected=!0,t.stats=e.stats,t.container=e.container),t})})})},this.getInstanceStatus=function(e){var i=t.defer(),a=void 0;if(o.currentSubscriber){var u=void 0;try{u=JSON.parse(e.tenant.service_specific_attribute)}catch(l){u=null}if(u&&u.instance_id)!function(){var e={};a=c.get({id:u.instance_id}).$promise.then(function(t){return e=t,s.getInstanceStats(e.instance_uuid)}).then(function(t){e.stats=t;var n="vcpe-"+o.currentSubscriber.tags.sTag+"-"+o.currentSubscriber.tags.cTag;return e.container={name:n},s.getContainerStats(n)}).then(function(t){return e.container.stats=t.stats,e.container.port=t.port,[e]})}();else{var d=t.defer();d.resolve([]),a=d.promise}}else{var p={service_vsg:{kind:"vCPE"},service_vbng:{kind:"vBNG"},service_volt:{kind:"vOLT"}};a=r.queryVsgInstances(p[e.name]).$promise.then(function(e){return s.getInstancesStats(n.uniq(e))})}return a.then(function(e){o.highlightInstances(e),i.resolve(e)})["catch"](function(e){i.reject(e)}),i.promise}}])}(),angular.module("xos.diagnostic").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosEcordTopology.js b/xos/core/xoslib/static/js/xosEcordTopology.js
index 223c2a4..834cf2f 100644
--- a/xos/core/xoslib/static/js/xosEcordTopology.js
+++ b/xos/core/xoslib/static/js/xosEcordTopology.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";function _toConsumableArray(n){if(Array.isArray(n)){for(var e=0,t=Array(n.length);e<n.length;e++)t[e]=n[e];return t}return Array.from(n)}function _toConsumableArray(n){if(Array.isArray(n)){for(var e=0,t=Array(n.length);e<n.length;e++)t[e]=n[e];return t}return Array.from(n)}angular.module("xos.ecordTopology",["ngResource","ngCookies","ui.router","xos.helpers","ui.checkbox"]).config(["$stateProvider",function(n){n.state("ecord-topo",{url:"/",template:"<ecord-topo></ecord-topo>"}).state("eline-create",{url:"/eline",template:"<eline-form></eline-form>"}).state("eline-details",{url:"/eline/:id",template:"<eline-details></eline-details>"})}]).config(["$httpProvider",function(n){n.interceptors.push("NoHyperlinks")}]).constant("cordIcons",{cordLogo:"M92.5,62.3l-33,33,2.5,2.5c4.1,4.1,7.4,3.6,11.2-.1L95.9,75l-4.5-4.5,4.7-4.7-3.6-3.6Zm2.6,7L98.4,66l3.3,3.3-3.3,3.3-3.3-3.3ZM94.5,60l4.9-4.9,4.9,4.9-4.9,4.9ZM36.2,36.1L18.6,53.8c-7.8,7.8-5.8,17.4-2.4,22l-2.2-2.2c-10.6-10.6-11.2-20,0-31.2L28.2,28.1L31.3,25l8,8-3.1,3.1ZM55.5,55.4l3.6-3.6L66.9,44l-8-8l-2.5,2.5-5.2,5.2l-3.6,3.6L33.2,61.6C22,72.7,22.5,82.2,33.2,92.8L35.4,95c-3.4-4.5-5.4-14.1,2.4-22L55.5,55.4ZM50.7,21.7l-8-8L35,21.2l8,8,7.6-7.6ZM62.8,9.6L55.4,17l-8-8,7.4-7.4,8,8Zm0.7,18.3-7.6,7.6-8-8,7.6-7.6,8,8Zm26.1-6.6-8.1,8.1-8-8,8.1-8.1,8,8ZM79.3,31.5l-7.4,7.4-8-8,7.4-7.4,8,8ZM45.7,45.6L54.3,37l-8-8-8.6,8.6L23.4,51.8C12.2,63,12.8,72.4,23.4,83l2.2,2.2c-3.4-4.5-5.4-14.1,2.4-22ZM34.9,80.7l20.6,20.5c2,2,4.6,4.1,7.9,3.2-2.9,2.9-8.9,1.7-11.9-1.3L35.1,86.8,35,86.6H34.9l-0.8-.8a15,15,0,0,1,.1-1.9,14.7,14.7,0,0,1,.7-3.2Zm-0.6,7.4a21.3,21.3,0,0,0,5.9,11.7l5.7,5.7c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2L34.3,88.1Zm3.5-12.4a16.6,16.6,0,0,0-2.3,3.6L57,100.8c3,3,9,4.1,11.9,1.3-3.3.9-5.9-1.2-7.9-3.2Z",service:"M2.16,10.77l2.7-.44a0.36,0.36,0,0,0,.21-0.2c0.24-.55.47-1.1,0.69-1.65a0.42,0.42,0,0,0,0-.33c-0.5-.74-1-1.47-1.52-2.18L5.94,4.22,8.07,5.75a0.37,0.37,0,0,0,.44,0C9,5.55,9.52,5.36,10,5.16a0.36,0.36,0,0,0,.27-0.32c0.13-.87.28-1.74,0.42-2.64l0.23,0c0.66,0,1.32,0,2,0a0.25,0.25,0,0,1,.3.26c0.13,0.81.28,1.62,0.41,2.44a0.34,0.34,0,0,0,.26.3c0.52,0.2,1,.41,1.54.64a0.34,0.34,0,0,0,.4,0l1.93-1.4L18,4.22,19.76,6c-0.49.7-1,1.43-1.52,2.16a0.4,0.4,0,0,0,0,.47c0.23,0.49.43,1,.62,1.49a0.36,0.36,0,0,0,.32.27l2.66,0.43v2.45l-1.63.29c-0.36.06-.72,0.11-1.07,0.19a0.43,0.43,0,0,0-.26.22c-0.23.53-.43,1.07-0.67,1.6a0.31,0.31,0,0,0,0,.37l1.4,1.94,0.17,0.24-1.74,1.74c-0.69-.48-1.41-1-2.13-1.5a0.43,0.43,0,0,0-.52,0,13.34,13.34,0,0,1-1.43.6,0.4,0.4,0,0,0-.32.35c-0.14.86-.3,1.72-0.46,2.59H10.73c-0.14-.85-0.29-1.7-0.42-2.55A0.43,0.43,0,0,0,10,18.88c-0.5-.18-1-0.39-1.46-0.61a0.36,0.36,0,0,0-.42,0c-0.73.52-1.46,1-2.17,1.52L4.16,18.08l0.37-.52c0.39-.55.78-1.1,1.19-1.65a0.31,0.31,0,0,0,0-.37C5.52,15,5.3,14.5,5.09,14A0.34,0.34,0,0,0,4.8,13.7l-2.64-.46V10.77ZM15.43,12A3.45,3.45,0,1,0,12,15.48,3.46,3.46,0,0,0,15.43,12Z"}).directive("ecordTopo",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/ecord-topo.tpl.html",controller:["Eline","$location",function(n,e){var t=this;n.query().$promise.then(function(n){t.elines=n})["catch"](function(n){throw new Error(n)}),this.selectEline=function(n){e.path("/eline/"+n.id)}}]}}),function(){angular.module("xos.ecordTopology").service("Uni",["$resource","_",function(n,e){return n("/api/service/metronetworkservice/SCA_ETH_FPP_UNI_N/:id",{id:"@id"},{query:{isArray:!0,interceptor:{response:function(n){var t=e.map(n.data,function(n,e){var t=n.latlng,i=t.substring(1,t.indexOf(",")-1);i=i.trim();var r=t.substring(t.indexOf(",")+1,t.length-1);return r=r.trim(),n.latlng=[i,r],n});return t}}}})}])}(),angular.module("xos.ecordTopology").run(["$templateCache",function(n){n.put("templates/ecord-topo.tpl.html",'<div class="row" ng-show="vm.elines.length == 0">\n    <div class="col-xs-10 col-xs-offset-1 text-center">\n        <div class="jumbotron" style="margin-top: 100px">\n            <div class="row">\n                <div class="col-sm-4">\n                    <img ng-src="{{\'/imgs/\'+user.image+\'.jpg\'}}" class="img-responsive img-rounded">\n                </div>\n                <div class="col-sm-8">\n                    <h1>Hello, {{currentUser.name}}</h1>\n                    <p style="padding-top: 20px">\n                        Looks like you have not yet created any E-LINE!\n                    </p>\n                    <div style="margin-top: 60px">\n                        <a class="btn btn-success btn-lg" href="#/eline" role="button">Start now</a>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n<div class="row" ng-show="vm.elines.length > 0">\n    <div class="col-sm-6">\n        <div class="panel panel-primary animate-vertical" ng-hide="vm.elines.length == 0">\n            <div class="panel-heading">\n                <h3 class="panel-title">E-LINES</h3>\n            </div>\n            <div class="panel-body">\n                <elan-map elan="vm.elines"></elan-map>\n            </div>\n        </div>\n    </div>\n    <div class="col-sm-6 eline-list">\n        <div class="panel panel-primary table-container" ng-show="vm.elines.length >\n        0">\n            <!-- <pre>{{elans | json}}</pre> -->\n            <table class="table">\n                <thead>\n                <tr>\n                    <th>E-LINE</th>\n                    <th>Unis</th>\n                </tr>\n                </thead>\n                <tbody>\n                <tr ng-repeat="eline in vm.elines | orderBy:\'id\'" ng-click="vm.selectEline(eline)">\n                    <td>{{eline.sid}}</td>\n                    <td>\n                <span> - </span>\n                  {{eline.uni1.location}}\n                     {{eline.uni1.pid}}\n                </span>\n                <span> - </span>\n                  {{eline.uni2.location}}\n                     {{eline.uni2.pid}}\n                </span>\n                    </td>\n                </tr>\n                </tbody>\n            </table>\n        </div>\n        <a class="btn btn-success btn-lg btn-block" href="#/eline" role="button">Create a new E-LINE!</a>\n    </div>\n</div>'),n.put("templates/eline-details.tpl.html",'<div id="home" class="container-fluid">\n    <div class="row">\n        <div class="col-sm-6">\n            <div class="panel panel-primary">\n                <div class="panel-heading">\n                    <h3 class="panel-title">E-LINE MAP</h3>\n                </div>\n                <div class="panel-body">\n                    <elan-map ng-hide="!vm.eline" elan="[vm.eline]"></elan-map>\n                </div>\n            </div>\n            <div class="panel panel-primary">\n                <div class="panel-heading">\n                    <h3 class="panel-title">E-LINE SERVICES</h3>\n                </div>\n                <div class="panel-body">\n                    <service-map ng-if="vm.eline" unis="vm.eline.SCA_ETH_Flow_Points" services="vm.activeServices"></service-map>\n                </div>\n            </div>\n        </div>\n        <div class="col-sm-6">\n            <div class="panel panel-primary service-container">\n                <div class="panel-heading">\n                    <h3 class="panel-title">Add a service:</h3>\n                </div>\n                <div class="panel-body">\n                    <div class="row" ng-repeat="(k,v) in vm.availableServices">\n                        <div class="col-xs-12">\n                            <label>{{k | uppercase}}</label>\n                        </div>\n                        <div class="col-xs-{{12/v.length}}" ng-repeat="service in v">\n                            <a ng-click="vm.toggleService(service)" class="btn btn-block"\n                               ng-class="{\'btn-primary-border\': !vm.isServiceActive(service), \'btn-primary\': vm.isServiceActive(service)}">{{service.label}}</a>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class="row">\n                <div class="col-sm-6">\n                    <div class="panel panel-primary animate-vertical" ng-hide="!vm.eline.SCA_ETH_Flow_Points[0]">\n                        <div class="panel-heading">\n                            <h3 class="panel-title">{{vm.eline.SCA_ETH_Flow_Points[0].scaEthFppUniN.name}}</h3>\n                        </div>\n                        <div class="panel-body">\n                            <div class="row">\n                                <div class="col-sm-12">\n                                    <div class="input-group">\n                                        <span class="input-group-addon">CIR</span>\n                                        <input b-to-mb ng-model="vm.eline.SCA_ETH_Flow_Points[0].scaEthFppUniN.interfaceCfgIngressBwp.bwpCfgCir" ng-value="\'10\'" class="form-control" type="number" required>\n                                        <span class="input-group-addon">Gb</span>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class="row">\n                                <div class="col-sm-12">\n                                    <div class="input-group">\n                                        <span class="input-group-addon">EIR</span>\n                                        <input b-to-mb ng-model="vm.eline.SCA_ETH_Flow_Points[0].scaEthFppUniN.interfaceCfgIngressBwp.bwpCfgEir" ng-value="\'30\'" class="form-control" type="number" required>\n                                        <span class="input-group-addon">Gb</span>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class="col-sm-6">\n                    <div class="panel panel-primary animate-vertical" ng-hide="!vm.eline.SCA_ETH_Flow_Points[1]">\n                        <div class="panel-heading">\n                            <h3 class="panel-title">{{vm.eline.SCA_ETH_Flow_Points[1].scaEthFppUniN.name}}</h3>\n                        </div>\n                        <div class="panel-body">\n                            <div class="row">\n                                <div class="col-sm-12">\n                                    <div class="input-group">\n                                        <span class="input-group-addon">CIR</span>\n                                        <input b-to-mb ng-model="vm.eline.SCA_ETH_Flow_Points[1].scaEthFppUniN.interfaceCfgIngressBwp.bwpCfgCir" ng-value="\'10\'" class="form-control" type="number" required>\n                                        <span class="input-group-addon">Gb</span>\n                                    </div>\n                                </div>\n                            </div>\n                            <div class="row">\n                                <div class="col-sm-12">\n                                    <div class="input-group">\n                                        <span class="input-group-addon">EIR</span>\n                                        <input b-to-mb ng-model="vm.eline.SCA_ETH_Flow_Points[1].scaEthFppUniN.interfaceCfgIngressBwp.bwpCfgEir" ng-value="\'30\'" class="form-control" type="number" required>\n                                        <span class="input-group-addon">Gb</span>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class="panel panel-primary table-container sla">\n                <table class="table">\n                    <thead>\n                    <tr>\n                        <th>SLA</th>\n                        <th>Value</th>\n                        <th>Unit</th>\n                    </tr>\n                    </thead>\n                    <tbody>\n                    <tr ng-repeat="sla in  vm.slas">\n                        <td>{{sla.name}}</td>\n                        <td class="text-right">\n                            <input class="form-control input-sm" type="text" ng-model="sla.default"></input>\n                        </td>\n                        <td>{{sla.unit}}</td>\n                    </tr>\n                    </tbody>\n                </table>\n            </div>\n            <div class="row">\n                <div class="col-xs-12">\n                    <div ng-show="!saved"ng-click="vm.saveEline()" class="btn btn-success btn-block btn-lg">Save</div>\n                    <div ng-show="saved"class="form-success btn-blockanimate-fade">Done</div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>'),n.put("templates/eline-form.tpl.html",'<!-- ELINE CREATION POINT TO POINT -->\n<div class="container-fluid eline-form">\n    <div class="row">\n        <div class="col-xs-10 col-xs-offset-1">\n            <div class="panel panel-primary animate-vertical">\n                <div class="panel-heading">\n                    <h3 class="panel-title">Create E-LINE</h3>\n                </div>\n                <form name="vm.eline" ng-submit="vm.createEline(vm.el, vm.eline)">\n                    <div class="panel-body">\n                        <div class="row">\n                            <div class="col-xs-12">\n                                <label>Name:</label>\n                                <input type="text" class="form-control input-lg" ng-model="vm.el.evcCfgidentifier" required></div>\n                        </div>\n                        <div class="row">\n                            <div class="col-xs-6">\n                                <label>Start:</label>\n                                <div class="alert alert-danger animate-vertical" ng-hide="!vm.formErrors.startError">\n                                    {{vm.formErrors.startError}}\n                                </div>\n                                <!--<pre>{{vm.startUnis | json}}</pre>-->\n                                <div class="row uni-repeat" ng-repeat="u in vm.startUnis">\n                                    <div class="col-xs-2">\n                                        <checkbox largest\n                                                  ng-class="{\'btn-primary\': !u.alreadySelected, \'btn-danger\': u.alreadySelected === true}"\n                                                  ng-model="u.selected"\n                                                  ng-change="vm.selectUni(u, \'start\')"\n                                                  required\n                                        ></checkbox>\n                                    </div>\n                                    <div class="col-xs-5">\n\n                                        <b>{{u.name || u.interfaceCfgIdentifier}}</b>\n\n                                    </div>\n                                    <div class="col-xs-5">\n                                        {{u.location}}\n                                    </div>\n                                </div>\n                            </div>\n                            <div class="col-xs-6">\n                                <label>End:</label>\n                                <div class="alert alert-danger animate-vertical" ng-hide="!vm.formErrors.endError">\n                                    {{vm.formErrors.endError}}\n                                </div>\n                                <div class="row uni-repeat" ng-repeat="u in vm.endUnis">\n                                    <div class="col-xs-2">\n                                        <checkbox largest\n                                                  ng-class="{\'btn-primary\': !u.alreadySelected, \'btn-danger\': u.alreadySelected === true}"\n                                                  ng-model="u.selected"\n                                                  ng-change="vm.selectUni(u, \'end\')"\n                                                  required\n                                        ></checkbox>\n                                    </div>\n                                    <div class="col-xs-5">\n                                        <b>{{u.name || u.interfaceCfgIdentifier}}</b>\n                                    </div>\n                                    <div class="col-xs-5">\n                                        {{u.location}}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class="panel-footer text-right">\n                        <button ng-hide="vm.eline.$saved" type="submit" class="btn btn-success btn-lg animate-fade">Save</button>\n                        <div ng-hide="!vm.eline.$saved" class="form-success animate-fade">Done</div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!-- MULTIPLE POINT CREATION -->\n<div class="container-fluid eline-form" ng-if="vm.currentUser.userId === 2">\n    <div class="row">\n        <div class="col-xs-10 col-xs-offset-1">\n            <div class="panel panel-primary animate-vertical">\n                <div class="panel-heading">\n                    <h3 class="panel-title">Create Infrastructure</h3>\n                </div>\n                <form name="vm.infrastructure" ng-submit="vm.createInfrastructure(vm.infrastructureUnis)">\n                    <div class="panel-body">\n                        <div class="row">\n                            <div class="col-sm-6 infrastructureUnis" ng-repeat="u in vm.infrastructureUnis">\n                                <div class="row uni-repeat">\n                                    <div class="col-xs-2">\n                                        <checkbox largest\n                                                  class="btn-primary"\n                                                  ng-model="u.selected"\n                                                  required\n                                        ></checkbox>\n                                    </div>\n                                    <div class="col-xs-5">\n                                        <b>{{u.name}}</b>\n                                    </div>\n                                    <div class="col-xs-5">\n                                        {{u.location}}\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class="panel-footer text-right">\n                        <button ng-hide="vm.eline.$saved" type="submit" class="btn btn-success btn-lg animate-fade">Save</button>\n                        <div ng-hide="!vm.eline.$saved" class="form-success animate-fade">Done</div>\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</div>')}]),function(){angular.module("xos.ecordTopology").directive("serviceMap",function(){return{restrict:"E",scope:{unis:"=",services:"="},bindToController:!0,controllerAs:"vm",template:"",controller:["$element","$scope","$rootScope","$timeout","$log","cordIcons",function(n,e,t,i,r,a){var s=this,l=n[0],c=d3.layout.tree(),o=500,d=40,u=function g(n){var e=0;return n.children&&n.children.forEach(function(n){var t=g(n);t>e&&(e=t)}),1+e},v=d3.select(l).append("svg").style("width",l.clientWidth+"px").style("height",l.clientHeight+"px"),p=d3.svg.diagonal().projection(function(n){return[n.y,n.x]}),m=0,f=function(n){var e=u(n);c.size([l.clientHeight,l.clientWidth]);var t=c.nodes(n),i=c.links(t),r=(l.clientWidth-d)/(e-1);t.forEach(function(n,e){0===e?n.y=d:n.y=n.depth*r});var s=v.selectAll("g.node").data(t,function(n){return n.id||(n.id=++m)}),f=s.enter().append("g").attr({"class":function(n){return"node "+n.type},id:function(n){return n.id}}).attr("transform",function(){return"translate("+l.clientWidth/2+", 50)"});f.append("rect").attr({"class":function(n){return n.type},width:24,height:24,x:-12,y:-12}),f.filter(".uni").append("path").attr({d:a.cordLogo,transform:"translate(-10, -10),scale(0.18)"}),f.filter(".service").append("path").attr({d:a.service,transform:"translate(-12, -12)"}),f.append("text").attr({"text-anchor":"middle",x:0,y:25}).text(function(n){return n.name});var g=s.exit().transition().duration(o).remove();g.select("circle").attr("r",1e-6),g.select("text").style("fill-opacity",1e-6);var h=(s.transition().duration(o).attr("transform",function(n){return"translate("+n.y+","+n.x+")"}),v.selectAll("path.link").data(i,function(n){return n.target.id}));h.enter().insert("path","g").attr("class","link").attr("d",function(n){var e={x:n.source.x,y:n.source.y};return p({source:e,target:e})}),h.transition().duration(o).attr("d",p),h.exit().transition().duration(o).attr("d",function(n){var e={x:n.source.x,y:n.source.y};return p({source:e,target:e})}).remove(),t.forEach(function(n){n.x0=n.x,n.y0=n.y})};this.formatUni=function(n){return n.reduce(function(n,e,t){return n.push({name:e.scaEthFppUniN.name,children:[],id:"uni-"+t}),n},[])},this.addServices=function(n,e){var t=[e[0]].concat(_toConsumableArray(n),[e[1]]),i=function a(n,e){if(0===e.length)return[];var t=e.shift(),i={name:t.name||t.label,type:t.name?"uni":"service",children:a(t,e),id:t.id};return[i]},r=i({},t);return r[0]},e.$watch(function(){return s.services},function(n){n&&s.unis&&f(s.addServices(n,s.formatUni(s.unis)))},!0)}]}})}(),function(){angular.module("xos.ecordTopology").service("Eline",["$resource",function(n){return n("/api/service/metronetworkservice/SCA_ETH_FDFr_EC/:id",{id:"@id"},{query:{isArray:!0,interceptor:{response:function(n){var e=_.map(n.data,function(n,e){var t=n.uni1.latlng,i=t.substring(1,t.indexOf(",")-1);i=i.trim();var r=t.substring(t.indexOf(",")+1,t.length-1);return r=r.trim(),n.uni1.latlng=[i,r],t=n.uni2.latlng,i=t.substring(1,t.indexOf(",")-1),i=i.trim(),r=t.substring(t.indexOf(",")+1,t.length-1),r=r.trim(),n.uni2.latlng=[i,r],n});return e}}}})}])}(),function(){angular.module("xos.ecordTopology").directive("elanMap",function(){return{restrict:"E",scope:{elan:"="},bindToController:!0,controllerAs:"vm",template:"",controller:["$element","$scope","$rootScope","$timeout","_","cordIcons",function(n,e,t,i,r,a){var s,l,c=this,o=n[0];e.$watch(function(){return c.elan},function(n){n&&i(function(){v(angular.copy(n))},500)},!0);var d=d3.layout.force(),u=function(){l=d3.geo.mercator().center([-122.2,37.6]).scale(28e3).translate([o.clientWidth/2,o.clientHeight/2]);var n=d3.geo.path().projection(l),e=d3.select(o).append("svg").attr("id","map").attr("width",o.clientWidth).attr("height",o.clientHeight);d3.json("/js/json/bayarea.json",function(t,i){if(t)throw new Error(t);e.selectAll(".subunit").data(topojson.feature(i,i.objects.bayareaGEO).features).enter().append("path").attr("class",function(n,e){return"subunit _"+e}).attr("d",n)})},v=function(n){if(n[0]){d.size([o.clientWidth,o.clientHeight]).charge(-20).chargeDistance(200).linkStrength(.1),angular.element(o).children().remove(),u();var e,t,i,c=d3.select(o).append("svg").style("width",o.clientWidth+"px").style("height",o.clientHeight+"px"),v=[],p=[],m=0;r.forEach(n,function(n){var a=r.find(v,{id:n.uni1.pid});if(a)n.uni1.pid=a.id;else{n.uni1.fixed=!0;try{var s=n.uni1.latlng;("string"==typeof s||s instanceof String)&&(e=n.uni1.latlng,t=e.substring(1,e.indexOf(",")-1),t=t.trim(),i=e.substring(e.indexOf(",")+1,e.length-1),i=i.trim(),n.uni1.latlng=[t,i]);var c=l([n.uni1.latlng[0],n.uni1.latlng[1]]);n.uni1.x=c[0],n.uni1.y=c[1],n.uni1.pid=n.uni1.pid||m++,v.push(n.uni1)}catch(o){throw new Error(o)}}if(a=r.find(v,{id:n.uni2.pid}))n.uni2.pid=a.id;else{n.uni2.fixed=!0;try{var d=n.uni2.latlng;("string"==typeof d||d instanceof String)&&(e=n.uni2.latlng,t=e.substring(1,e.indexOf(",")-1),t=t.trim(),i=e.substring(e.indexOf(",")+1,e.length-1),i=i.trim(),n.uni2.latlng=[t,i]);var c=l([n.uni2.latlng[0],n.uni2.latlng[1]]);n.uni2.x=c[0],n.uni2.y=c[1],n.uni2.pid=n.uni2.pid||m++,v.push(n.uni2)}catch(o){throw new Error(o)}}p.push({source:r.findIndex(v,n.uni1),target:r.findIndex(v,n.uni2),value:1})}),d.nodes(v).links(p).start();var f=c.selectAll(".link").data(p).enter().append("line").attr({"class":"link"});s=c.selectAll(".node").data(v).enter().append("g",function(n){return n.scaEthFppUniN.interfaceCfgIdentifier}).attr({"class":function(n){return"node "+(n.type?n.type:"uni")}}),s.append("rect").attr({"class":function(n){return n.type?n.type:"uni"},width:24,height:24,x:-12,y:-12}),s.append("path").attr({d:a.cordLogo,transform:"translate(-10, -10),scale(0.18)"}),s.append("text").attr({x:0,y:25,"text-anchor":"middle"}).text(function(n){return n.pid}),d.on("tick",function(){f.attr("x1",function(n){return n.source.x}).attr("y1",function(n){return n.source.y}).attr("x2",function(n){return n.target.x}).attr("y2",function(n){return n.target.y}),s.attr("transform",function(n){return"translate("+n.x+","+n.y+")"})})}}}]}})}(),function(){angular.module("xos.ecordTopology").directive("elineForm",function(){return{restrict:"E",scope:{uni:"="},bindToController:!0,controllerAs:"vm",templateUrl:"templates/eline-form.tpl.html",controller:["$scope","$timeout","$location","_","Uni","Eline",function(n,e,t,i,r,a){var s=this,l=function(n,e){return i.findIndex(e,{id:n.id,selected:!0})!==-1},c=function(n,e){e.map(function(e){return e.id!==n.id&&(e.selected=!1,e.alreadySelected=!1),e})};this.selectUni=function(n,e){if(n.selected){c(n,s[e+"Unis"]);var t="start"===e?"end":"start";return l(n,s[t+"Unis"])?n.alreadySelected=!0:(s.formErrors[e+"Error"]=null,s.el[e]=n)}return s.el[e]=null,n.alreadySelected=!1},this.el={},r.query().$promise.then(function(n){s.startUnis=angular.copy(n),s.endUnis=angular.copy(n),s.infrastructureUnis=angular.copy(n)});var o=function(n){var e={adminstate:"activationrequested",operstate:"active",uni1:{id:n.start.id},uni2:{id:n.end.id},sid:n.evcCfgidentifier,type:"Point_To_Point"};return e};this.formErrors={},this.createEline=function(i,r){if(i.start||(s.formErrors.startError="Select a starting point"),i.end||(s.formErrors.endError="Select an ending point"),i.start&&i.end){var l=o(i);a.save(l).$promise.then(function(i){r.$saved=!0,n.$emit("elan.created",i),e(function(){t.path("/")},1e3)})["catch"](function(n){throw new Error(n)})}},n.$watch(function(){return s.el},function(n,e){n!==e&&s.eline.$saved&&(s.eline.$saved=!1)},!0),this.prepareInfrastructure=function(n,e){var t=0,i=function r(e){var i,a=[],s=e.shift(),l=e.reduce(function(e,i){var r={};return r.evcCfgidentifier=n+"-"+ ++t,r.start=s,r.end=i,e.push(o(r)),e},[]);if(a=(i=a).concat.apply(i,_toConsumableArray(l)),1===e.length)return a;var c;return(c=a).concat.apply(c,_toConsumableArray(r(e)))};return i(e)},this.createInfrastructure=function(r){r=i.filter(r,{selected:!0}),$log.info("Send request to MARC!!! - Decide the format!",r);var l=[];s.prepareInfrastructure("test",r).forEach(function(n){l.push(a().save(n).$promise)}),$q.all(l).then(function(i){i.forEach(function(e){n.$emit("elan.created",e),cordConfig.pages.push(e)}),e(function(){t.path("/home")},1e3)})}}]}})}(),function(){angular.module("xos.ecordTopology").directive("elineDetails",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/eline-details.tpl.html",controller:["$scope","$stateParams","Eline",function(n,e,t){var i=this;this.eline=null;t();t.get({id:e.id}).$promise.then(function(n){i.eline=n}),this.slas=[{name:"Latency",unit:"ms","default":300},{name:"Latency Variation",unit:"%","default":5},{name:"Packet Loss",unit:"%","default":2}],this.availableServices={performance:[{id:1,label:"WAN Accelerator"},{id:2,label:"Traffic Analytics"},{id:3,label:"Policy Control"}],security:[{id:4,label:"Firewall"},{id:5,label:"Anti-virus"},{id:6,label:"IDS"},{id:7,label:"Encryption"}],enterprise:[{id:8,label:"vRouter"},{id:9,label:"NAT"},{id:10,label:"VPN"}]},this.activeServices=[],this.toggleService=function(n){var e=i.activeServices.indexOf(n);e!==-1?i.activeServices.splice(i.activeServices.indexOf(n),1):i.activeServices.push(n)},this.isServiceActive=function(n){var e=i.activeServices.indexOf(n);return e!==-1},n.$watch(function(){return i.el},function(n,e){n!==e&&i.elineUpdate.$saved&&(i.eline.$saved=!1)},!0),this.saveEline=function(){var e=new t(i.eline);e.$save().then(function(){n.saved=!0})["catch"](function(n){console.error(n)})}}]}}).directive("bToMb",function(){return{require:"ngModel",restrict:"A",link:function(n,e,t,i){i.$parsers.push(function(n){return 1e9*n}),i.$formatters.push(function(n){return n/1e9})}}})}(),angular.module("xos.ecordTopology").run(["$location",function(n){n.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosGlobalXos.js b/xos/core/xoslib/static/js/xosGlobalXos.js
index e665832..7acba5e 100644
--- a/xos/core/xoslib/static/js/xosGlobalXos.js
+++ b/xos/core/xoslib/static/js/xosGlobalXos.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";var _slicedToArray=function(){function e(e,n){var o=[],t=!0,i=!1,a=void 0;try{for(var s,r=e[Symbol.iterator]();!(t=(s=r.next()).done)&&(o.push(s.value),!n||o.length!==n);t=!0);}catch(l){i=!0,a=l}finally{try{!t&&r["return"]&&r["return"]()}finally{if(i)throw a}}return o}return function(n,o){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return e(n,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();angular.module("xos.globalXos",["ngResource","ngCookies","ui.router","xos.helpers","ui.bootstrap.modal","ui.bootstrap.tpls"]).config(["$stateProvider",function(e){e.state("xos-list",{url:"/",template:"<xos-list></xos-list>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).value("LXOS",[]).directive("xosList",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/xos-list.tpl.html",controller:["$window","$q","_","Controllers","LXOS","LocalAuth","LocalSlices","LocalUsers","$uibModal","Slices",function(e,n,o,t,i,a,s,r,l,c){var u=this,d=this;n.all([t.query({backend_type:"CORD"}).$promise,c.query().$promise]).then(function(e){var n=_slicedToArray(e,2);u.xoss=n[0],u.gSlices=n[1]}),this.openLocally=function(n){return function(o){e.open(o.xos.auth_url+"admin/core/"+n+"/"+o.id,"_blank")}};var m=function(e){l.open({animation:!0,size:"lg",templateUrl:"listInstances.html",controllerAs:"vm",resolve:{slice:function(){return{name:e.name,xos:{name:"G-XOS"}}}},controller:["$uibModalInstance","slice","LocalInstances","LocalSlices",function(e,n,t,i){var a=this;this.slice=n,this.config={columns:[{label:"Name",prop:"name"}],actions:[{label:"Add Instance",icon:"remove",color:"red",cb:function(e){console.log(e),t.deleteFromLocal(e).then(function(){o.remove(a.instances,function(n){return n.id===e.id})})}}]},i.queryFromAll(d.xoss).$promise.then(function(e){return a.slicesId=e.filter(function(e){return e.name.indexOf(a.slice.name)>-1}).reduce(function(e,n){return e[n.xos.id]=n.id,e},{}),t.queryFromAll(d.xoss).$promise}).then(function(e){a.instances=e.filter(function(e){return a.slicesId[e.xos.id]===e.slice})})["catch"](function(e){a.instances=[]}),this.close=function(){e.dismiss("cancel")}}]})},f=function(e){l.open({animation:!0,size:"lg",templateUrl:"addInstance.html",controller:["$scope","$q","$uibModalInstance","slice","LocalInstances","LocalAuth",function(e,n,i,a,r,l){var c=this;this.slice=a,this.model={};var u=void 0;t.query({backend_type:"CORD"}).$promise.then(function(e){c.xoss=e,c.config.fields.xos.options=o.map(e,function(e){return{id:e.id,label:e.name}})}),e.$watch(function(){return c.model.xos},function(){c.model.xos&&(u=o.find(c.xoss,{id:c.model.xos}),r.getLocalInfo(u).then(function(e){var o=_slicedToArray(e,4);return c.config.fields.deployment.options=o[0],c.config.fields.image.options=o[1],c.config.fields.flavor.options=o[2],c.config.fields.node.options=o[3],n.all([s.getLocalByName(u,c.slice.name),l.getUserByName(u,u.admin_user)])}).then(function(e){console.log("aaaa: ",e);var n=_slicedToArray(e,2);c.localSlice=n[0],c.user=n[1]}))}),this.config={formName:"instanceForm",order:["xos","name"],excludedFields:["xos","slice"],actions:[{label:"Save",icon:"ok",cb:function(e){e.xos=u,e.slice=c.localSlice.id,e.creator=c.user.id,r.createOnLocal(e).then(function(e){a.instance_total=a.instance_total+1,i.close()})},"class":"success"},{label:"Cancel",icon:"remove",cb:function(){i.dismiss("cancel")},"class":"warning"}],fields:{xos:{type:"select",validators:{required:!0}},name:{type:"text",validators:{required:!0}},deployment:{type:"select",validators:{required:!0}},node:{type:"select",validators:{required:!0}},image:{type:"select",validators:{required:!0}},flavor:{type:"select",validators:{required:!0}},isolation:{type:"select",options:[{id:"vm",label:"VM"},{id:"container",label:"Container"},{id:"container_vm",label:"Container in VM"}],validators:{required:!0}}}}}],controllerAs:"vm",resolve:{slice:function(){return e}}})},h=[{label:"Name",prop:"name"}],v=[{label:"Max Instances",prop:"max_instances"},{label:"Instances",prop:"instance_total"},{label:"L-XOS",type:"custom",formatter:function(e){return e.xos.name}}];this.gSliceTableCgf={columns:h,filter:"field",order:!0,actions:[{label:"Get Instances",icon:"search",cb:m},{label:"Add Instances",icon:"plus",cb:f}]},this.sliceTableCfg={columns:h.concat(v),actions:[{label:"open locally",icon:"open",cb:this.openLocally("slice")},{label:"Get Instances",icon:"search",cb:function(e){l.open({animation:!0,size:"lg",templateUrl:"listInstances.html",controllerAs:"vm",resolve:{slice:function(){return e}},controller:["$uibModalInstance","slice","LocalInstances",function(e,n,o){var t=this;this.slice=n,this.config={columns:[{label:"Name",prop:"name"},{label:"deployment",prop:"deployment"}]},o.getFromLocal(n.xos).then(function(e){t.instances=e.filter(function(e){return e.slice===n.id})}),this.close=function(){e.dismiss("cancel")}}]})}},{label:"Add Instance",icon:"plus",cb:function(e){l.open({animation:!0,size:"lg",templateUrl:"addInstance.html",controller:["$uibModalInstance","slice","LocalInstances",function(e,n,o){var t=this;this.slice=n,this.model={},console.log(n),o.getLocalInfo(n.xos).then(function(e){var n=_slicedToArray(e,4);t.config.fields.deployment.options=n[0],t.config.fields.image.options=n[1],t.config.fields.flavor.options=n[2],t.config.fields.node.options=n[3]}),this.config={formName:"instanceForm",excludedFields:["xos","slice"],actions:[{label:"Save",icon:"ok",cb:function(i){i.xos=n.xos,i.slice=n.id,i.creator=t.user.id,o.createOnLocal(i).then(function(o){n.instance_total=n.instance_total+1,e.close()})},"class":"success"},{label:"Cancel",icon:"remove",cb:function(){e.dismiss("cancel")},"class":"warning"}],fields:{name:{type:"text",validators:{required:!0}},deployment:{type:"select",validators:{required:!0}},node:{type:"select",validators:{required:!0}},image:{type:"select",validators:{required:!0}},flavor:{type:"select",validators:{required:!0}},isolation:{type:"select",options:[{id:"vm",label:"VM"},{id:"container",label:"Container"},{id:"container_vm",label:"Container in VM"}],validators:{required:!0}}}}}],controllerAs:"vm",resolve:{slice:function(){return e}}})}}],filter:"field",order:!0},this.usersTableCfg={columns:[{label:"Name",type:"custom",formatter:function(e){return e.firstname+" "+e.lastname}},{label:"E-Mail",prop:"email"},{label:"User Name",prop:"username"},{label:"Time Zone",prop:"timezone"},{label:"L-XOS",type:"custom",formatter:function(e){return e.xos.name}}],actions:[{label:"open locally",icon:"open",cb:this.openLocally("user")}],filter:"field",order:!0},this.toggleXos=function(e){o.findIndex(i,{id:e.id})>-1?(e.active=!1,o.remove(i,{id:e.id})):(e.active=!0,i.push(e)),a.login().then(function(){return n.all([s.queryFromAll().$promise,r.queryFromAll().$promise])}).then(function(e){var n=_slicedToArray(e,2);u.localSlices=n[0],u.localUsers=n[1]})["catch"](function(e){console.log(e)})}}]}}),angular.module("xos.globalXos").run(["$templateCache",function(e){e.put("templates/xos-list.tpl.html",'<div class="container">\n  <div class="row">\n    <h2>Select XOS to synch:</h2>\n  </div>\n  <div class="row">\n    <div class="col-xs-12">\n      <h2>G-XOS Slices:</h2>\n    </div>\n    <div class="col-xs-12">\n      <xos-table\n              config="vm.gSliceTableCgf"\n              data="vm.gSlices">\n      </xos-table>\n    </div>\n  </div>\n  <div class="row">\n    <div class="col-xs-12">\n      <h2>Get L-XOS details:</h2>\n    </div>\n    <div\n      ng-repeat="xos in vm.xoss"\n      class="col-sm-2">\n      <div\n        class="well"\n        ng-class="{active: xos.active}"\n        ng-click="vm.toggleXos(xos)">\n          {{xos.humanReadableName || xos.name}}\n      </div>\n    </div>\n  </div>\n  <div class="row" ng-if="vm.localSlices.length > 0">\n    <div class="col-xs-12">\n      <h2>L-XOS Slices:</h2>\n    </div>\n    <div class="col-xs-12">\n      <xos-table\n        config="vm.sliceTableCfg"\n        data="vm.localSlices">\n      </xos-table>\n    </div>\n  </div>\n  <div class="row" ng-if="vm.localSlices.length > 0">\n    <div class="col-xs-12">\n      <h2>L-XOS Users:</h2>\n    </div>\n    <div class="col-xs-12">\n      <xos-table\n        config="vm.usersTableCfg"\n        data="vm.localUsers">\n      </xos-table>\n    </div>\n  </div>\n</div>\n<script type="text/ng-template" id="addInstance.html">\n  <div class="modal-header">\n      <h3 class="modal-title" id="modal-title">Add Instance to {{vm.slice.name}} on {{vm.slice.xos.name}}</h3>\n  </div>\n  <div class="modal-body" id="modal-body">\n    <xos-form ng-model="vm.model" config="vm.config"></xos-form>\n  </div>\n</script>\n<script type="text/ng-template" id="listInstances.html">\n  <div class="modal-header">\n    <h3 class="modal-title" id="modal-title">Get Instances from {{vm.slice.name}} on {{vm.slice.xos.name}}</h3>\n  </div>\n  <div class="modal-body" id="modal-body">\n    <xos-table data="vm.instances" config="vm.config"></xos-table>\n  </div>\n  <div class="modal-footer">\n    <a ng-click="vm.close()" class="btn btn-warning">Close</a>\n  </div>\n</script>')}]),function(){angular.module("xos.globalXos").service("Controllers",["$resource",function(e){return e("/api/core/controllers/:id",{id:"@id"})}]).service("GXOS",["$q","$resource","_","LXOS",function(e,n,o,t){var i=this;this.attachXosToItem=function(e){var n=arguments.length<=1||void 0===arguments[1]?t:arguments[1];return o.map(e,function(e,t){var i=n[t];return o.map(e,function(e){return e.xos=i,e})})},this.buildQueryEndpoint=function(a){var s=arguments.length<=1||void 0===arguments[1]?t:arguments[1];return function(){var t=e.defer(),r=[],l=[];return o.forEach(s,function(e,o){var t=n(""+e.auth_url+a,{id:"@id"},{query:{isArray:!0,headers:{Authorization:"Basic "+btoa(e.admin_user+":"+e.admin_password)}}});r.push(t),l.push(r[o].query().$promise)}),e.all(l).then(function(e){e=i.attachXosToItem(e,s),t.resolve(o.flatten(e))})["catch"](t.reject),{$promise:t.promise}}},this.buildLocalResource=function(e,o){var t={Authorization:"Basic "+btoa(o.admin_user+":"+o.admin_password)},i=n(""+o.auth_url+e,{id:"@id"},{query:{isArray:!0,headers:t}});return i}}]).service("LocalAuth",["$q","$http","_","LXOS",function(e,n,o,t){var i="api/utility/login/";this.login=function(){var a=e.defer(),s=[];return o.forEach(t,function(e,o){var t=n.post(""+e.auth_url+i,{username:e.admin_user,password:e.admin_password});s.push(t)}),e.all(s).then(function(e){o.forEach(e,function(e,n){t[n].xoscsrftoken=e.data.xoscsrftoken,t[n].xossessionid=e.data.xossessionid,t[n].user=JSON.parse(e.data.user)}),a.resolve()})["catch"](function(e){a.reject(e)}),a.promise},this.getUserByName=function(o,t){var i=e.defer();return console.log(t),n.get(o.auth_url+"api/core/users/",{params:{username:t},headers:{Authorization:"Basic "+btoa(o.admin_user+":"+o.admin_password)}}).then(function(e){i.resolve(e.data[0])})["catch"](function(e){i.reject(e)}),i.promise}}]).service("LocalSlices",["$q","$http","GXOS",function(e,n,o){var t="api/utility/slicesplus/";this.queryFromAll=function(e){return o.buildQueryEndpoint(t,e)()},this.getLocalByName=function(o,i){var a=e.defer();return n.get(""+o.auth_url+t,{headers:{Authorization:"Basic "+btoa(o.admin_user+":"+o.admin_password)}}).then(function(e){var n=_.filter(e.data,function(e){return e.name.indexOf(i)>-1});a.resolve(n[0])})["catch"](function(e){a.reject(e)}),a.promise}}]).service("LocalUsers",["GXOS",function(e){var n="api/core/users/";this.queryFromAll=e.buildQueryEndpoint(n)}]).service("LocalInstances",["$q","$http","GXOS","LocalDeployments","LocalImages","LocalFlavor","LocalNode",function(e,n,o,t,i,a,s){var r="api/core/instances/";this.queryFromAll=function(e){return o.buildQueryEndpoint(r,e)()},this.createOnLocal=function(o){var t=e.defer(),i=o.xos;return delete o.xos,n.post(""+i.auth_url+r,o,{headers:{Authorization:"Basic "+btoa(i.admin_user+":"+i.admin_password)}}).then(function(e){t.resolve(e)})["catch"](function(e){t.reject(e)}),t.promise},this.getFromLocal=function(o,t){var i=e.defer();return n.get(""+o.auth_url+r,{params:t,headers:{Authorization:"Basic "+btoa(o.admin_user+":"+o.admin_password)}}).then(function(e){i.resolve(e.data)})["catch"](function(e){i.reject(e)}),i.promise},this.deleteFromLocal=function(o){console.log("deleteFromLocal");var t=e.defer();return n["delete"](""+o.xos.auth_url+r+o.id+"/",{headers:{Authorization:"Basic "+btoa(o.xos.admin_user+":"+o.xos.admin_password)}}).then(function(e){t.resolve(e.data)})["catch"](function(e){t.reject(e)}),t.promise},this.getLocalInfo=function(n){var o=e.defer();return e.all([t.queryFromLocal(n),i.queryFromLocal(n),a.queryFromLocal(n),s.queryFromLocal(n)]).then(function(e){e=_.map(e,function(e){return _.map(e,function(e){return{id:e.id,label:e.name}})}),o.resolve(e)})["catch"](o.reject),o.promise}}]).service("LocalDeployments",["$q","$http",function(e,n){var o="api/core/deployments/";this.queryFromLocal=function(t){var i=e.defer();return n.get(""+t.auth_url+o,{headers:{Authorization:"Basic "+btoa(t.admin_user+":"+t.admin_password)}}).then(function(e){i.resolve(e.data)})["catch"](function(e){i.reject(e)}),i.promise}}]).service("LocalImages",["$q","$http",function(e,n){var o="api/core/images/";this.queryFromLocal=function(t){var i=e.defer();return n.get(""+t.auth_url+o,{headers:{Authorization:"Basic "+btoa(t.admin_user+":"+t.admin_password)}}).then(function(e){i.resolve(e.data)})["catch"](function(e){i.reject(e)}),i.promise}}]).service("LocalFlavor",["$q","$http",function(e,n){var o="api/core/flavors/";this.queryFromLocal=function(t){var i=e.defer();return n.get(""+t.auth_url+o,{headers:{Authorization:"Basic "+btoa(t.admin_user+":"+t.admin_password)}}).then(function(e){i.resolve(e.data)})["catch"](function(e){i.reject(e)}),i.promise}}]).service("LocalNode",["$q","$http",function(e,n){var o="api/core/nodes/";this.queryFromLocal=function(t){var i=e.defer();return n.get(""+t.auth_url+o,{headers:{Authorization:"Basic "+btoa(t.admin_user+":"+t.admin_password)}}).then(function(e){i.resolve(e.data)})["catch"](function(e){i.reject(e)}),i.promise}}])}(),angular.module("xos.globalXos").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosHpc.js b/xos/core/xoslib/static/js/xosHpc.js
index a1eb26e..f4ed934 100644
--- a/xos/core/xoslib/static/js/xosHpc.js
+++ b/xos/core/xoslib/static/js/xosHpc.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.hpc",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(e){e.state("hpc-list",{url:"/",template:"<hpcs-list></hpcs-list>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).service("Hpc",["$q","$http",function(e,r){this.query=function(t){var n=e.defer();return r.get("/xoslib/hpcview",{params:t}).then(function(e){n.resolve(e.data)})["catch"](n.reject),{$promise:n.promise}}}]).directive("hpcsList",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/hpc-list.tpl.html",controller:["Hpc",function(e){var r=this,t=function(e){e=Number(e);var r=Math.floor(e/3600),t=Math.floor(e%3600/60),n=Math.floor(e%3600%60);return(r>0?r+"h "+(10>t?"0":""):"")+t+"m "+(10>n?"0":"")+n+"s"},n=function(e){return function(r){return angular.isNumber(r[e])?t(r[e]):r[e]}};this.routerConfig={filter:"field",order:!0,columns:[{label:"Name",prop:"name"},{label:"Ip Address",prop:"ip"},{label:"Record Checker",prop:"watcher.DNS.msg"},{label:"Name Servers",prop:"nameservers",type:"array"},{label:"Dns Demux Config Age",prop:"dnsdemux_config_age",type:"custom",formatter:n("dnsdemux_config_age")},{label:"Dns Redir Config Age",prop:"dnsredir_config_age",type:"custom",formatter:n("dnsredir_config_age")}]},this.cacheConfig={filter:"field",order:!0,columns:[{label:"Name",prop:"name"},{label:"Prober",prop:"watcher.HPC-hb.msg"},{label:"Fetcher",prop:"watcher.HPC-fetch.msg"},{label:"Config Age",prop:"config_age",type:"custom",formatter:n("config_age")}]},this.fetch=function(){e.query().$promise.then(function(e){r.routers=e[0].dnsdemux,r.caches=e[0].hpc})["catch"](function(e){throw new Error(e)})},this.fetch()}]}}),angular.module("xos.hpc").run(["$templateCache",function(e){e.put("templates/hpc-list.tpl.html",'<div class="container-fluid">\n    <div class="row">\n        <div class="col-xs-10">\n            <h1>Request Routers</h1>\n        </div>\n        <div class="col-xs-2 text-right">\n            <a href="" ng-click="vm.fetch()" class="btn btn-primary btn-reload">\n                <i class="glyphicon glyphicon-refresh"></i>\n                Refresh\n            </a>\n        </div>\n    </div>\n    <div class="row">\n        <div class="col-xs-12">\n            <xos-table config="vm.routerConfig" data="vm.routers"></xos-table>\n        </div>\n    </div>\n    <div class="row">\n        <div class="col-xs-12">\n            <h1>HyperCache</h1>\n        </div>\n    </div>\n    <div class="row">\n        <div class="col-xs-12">\n            <xos-table config="vm.cacheConfig" data="vm.caches"></xos-table>\n        </div>\n    </div>\n</div>')}]),angular.module("xos.hpc").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosMcord-slicing.js b/xos/core/xoslib/static/js/xosMcord-slicing.js
index c0f454b..4bdfb75 100644
--- a/xos/core/xoslib/static/js/xosMcord-slicing.js
+++ b/xos/core/xoslib/static/js/xosMcord-slicing.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.mcord-slicing",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(e){e.state("slicing-topo",{url:"/",template:"<slicing-topo></slicing-topo>"}).state("node-links",{url:"/data",template:"<node-links></node-links>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).service("McordSlicingTopo",["$http","$q",function(e,t){this.query=function(){var c=t.defer();return e.get("api/service/mcord_slicing_ui/topology/").then(function(e){var t=void 0;t=e.data.hasOwnProperty("nodes")?e.data:{nodes:e.data[0],links:e.data[1]},c.resolve(t)})["catch"](function(e){c.reject(e)}),{$promise:c.promise}}}]).directive("nodeLinks",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/node-links.tpl.html",controller:["McordSlicingTopo",function(e){var t=this;this.tableConfig={columns:[{label:"Id",prop:"id"},{label:"Name",prop:"name"},{label:"Type",prop:"type"},{label:"Plane",prop:"plane"},{label:"Model Id",prop:"model_id"}]},e.query().$promise.then(function(e){t.users=e.nodes})["catch"](function(e){throw new Error(e)})}]}}),angular.module("xos.mcord-slicing").run(["$templateCache",function(e){e.put("templates/node-links.tpl.html",'<div class="row">\n  <div class="col-sm-12">\n    <xos-table config="vm.tableConfig" data="vm.users"></xos-table>\n  </div>\n  <div class="col-sm-12"></div>\n</div>'),e.put("templates/slicing-topo.tpl.html","")}]);var _slicedToArray=function(){function e(e,t){var c=[],n=!0,r=!1,o=void 0;try{for(var i,a=e[Symbol.iterator]();!(n=(i=a.next()).done)&&(c.push(i.value),!t||c.length!==t);n=!0);}catch(s){r=!0,o=s}finally{try{!n&&a["return"]&&a["return"]()}finally{if(r)throw o}}return c}return function(t,c){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,c);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){angular.module("xos.mcord-slicing").directive("slicingTopo",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/slicing-topo.tpl.html",controller:["$element","SliceGraph","McordSlicingTopo","_","NodePositioner","FormHandler","mCordSlicingIcons",function(e,t,c,n,r,o,i){var a=this,s=void 0,l=void 0,d=void 0,u=void 0,p=void 0,f=void 0,v=void 0,m=void 0,g=void 0,h=void 0,y=void 0,C=void 0,x=d3.transition().duration(500);this.activeSlices=[];var M=function(){m=null,g=null,v.classed("hidden",!0)};c.query().$promise.then(function(c){r.storeEl(e[0]),w(e[0]),t.buildGraph(c),z=t.positionGraph(e[0]),P=t.getGraphLinks(z),G()})["catch"](function(e){throw new Error(e)});var w=function(e){a.el=e,d3.select(e).select("svg").remove(),s=d3.select(e).append("svg").style("width",e.clientWidth+"px").style("height",e.clientHeight+"px"),p=s.append("g").attr({"class":"link-group"}),u=s.append("g").attr({"class":"node-group"}),f=d3.select(e).append("div").attr({"class":"form-container"}),v=s.append("svg:path").attr("class","dragline hidden").attr("d","M0,0L0,0")},b=function(){s.selectAll(".link").attr("x1",function(e){return e.source.x}).attr("y1",function(e){return e.source.y}).attr("x2",function(e){return e.target.x}).attr("y2",function(e){return e.target.y})},z=[],P=[],k=function(e){var c=t.getSliceDetail(e),n=_slicedToArray(c,2),r=n[0],o=n[1];z=z.concat(r),P=P.concat(o),G()},S=function(e){t.removeActiveSlice(e),y&&y.sliceId===e&&(y=null,C=null),z=n.filter(z,function(t){return t.sliceId!==e||"control"!==t.plane&&"button"!==t.type||(o.removeFormByParentNode(t,p,f),!1)}),z=n.map(z,function(t){return t.sliceId===e&&delete t.sliceId,t}),P=n.filter(P,function(e){return n.findIndex(z,{id:e.data.source})!==-1&&n.findIndex(z,{id:e.data.target})!==-1}),G()},F=function(e){console.log(P),n.remove(P,function(t){return t.data.id===e}),console.log(P),G()},I=function(e){console.log("exp",e),M();var t=["ran-ru","ran-cu","pgw","sgw"];t.indexOf(e.type)>-1&&"data"===e.plane&&!e.sliceId?k(e):"button"===e.type?S(e.sliceId):!e.formAttached&&e.model?(e.formAttached=!0,o.drawForm(e,p,f)):e.formAttached&&(e.formAttached=!1,o.removeFormByParentNode(e,p,f))},N=function(){if(y){if(C=t.getNodeSuccessors(y),0===C.length)return;y.selected=!1;var e=n.findIndex(z,{id:C[0].id});y=z[e],y.selected=!0;var c=t.getNodeSuccessors(y);C=c.lenght>0?t.getNodePredecessors(c[0]):null}else y=z[0],y.selected=!0;G()},A=function(){if(y){if(C=t.getNodePredecessors(y),0===C.length)return;y.selected=!1;var e=n.findIndex(z,{id:C[0].id});e<0&&(e=z.length-1),y=z[e],y.selected=!0}else y=z[0],y.selected=!0;G()},E=function(e,t){return e.y<t.y?1:e.y>t.y?-1:0},D=function(e){return n.filter(z,function(t){return"pgw"===e.type&&"button"===t.type||("button"===e.type&&"pgw"===t.type||("sgw"===e.type&&"mme"===t.type||("mme"===e.type&&"sgw"===t.type||t.type===e.type)))}).sort(E)},H=function(){if(y){y.selected=!1;var e=D(y),t=n.findIndex(e,{id:y.id})+1;t===e.length&&(t=0);var c=n.findIndex(z,{id:e[t].id});y=z[c],y.selected=!0}else y=z[0],y.selected=!0;G()},$=function(){if(y){y.selected=!1;var e=D(y),t=n.findIndex(e,{id:y.id})-1;t<0&&(t=e.length-1);var c=n.findIndex(z,{id:e[t].id});y=z[c],y.selected=!0}else y=z[0],y.selected=!0;G()},G=function O(){d3.layout.force().nodes(z).links(P).charge(-1060).gravity(.1).linkDistance(200).size([a.el.clientWidth,a.el.clientHeight]).on("tick",b).start();d=p.selectAll(".link-container").data(P,function(e){return e.data.id}).enter().insert("g").attr({"class":"link-container",opacity:0}),d.transition(x).attr({opacity:1}),d.insert("line").attr("class",function(e){return"link "+e.data.plane}).on("click",function(e){h=e,d3.selectAll(".link").classed("selected",!1),d3.select(this).classed("selected",!0)}),l=u.selectAll(".node").data(z,function(e){return e.id}).attr({"class":function(e){return"node "+e.plane+" "+e.type+" "+(e.selected?"selected":"")}}),l.enter().append("g").attr({"class":"node-container",transform:function(e){return e.transform},opacity:0}),l.transition(x).attr({opacity:1}),l.append("rect").attr({"class":function(e){return"node "+e.plane+" "+e.type+" "+(e.selected?"selected":"")},width:100,height:50,x:-50,y:-25}),l.append("text").attr({"text-anchor":"left","alignment-baseline":"middle",x:-20}).text(function(e){return""+e.name}),l.on("click",function(e){I(e)});var e=l.filter(function(e){return"ue"===e.type});e.append("path").attr({d:i.mobile,"class":"icon",transform:"translate(-40, -12.5), scale(0.5)"});var c=l.filter(function(e){return"profile"===e.type});c.append("path").attr({d:i.profile,"class":"icon",transform:"translate(-40, -12.5), scale(0.5)"});var n=l.filter(function(e){return"ran-ru"===e.type});n.append("path").attr({d:i.rru,"class":"icon",transform:"translate(-40, -12.5), scale(0.5)"});var r=l.filter(function(e){return"ran-cu"===e.type});r.append("path").attr({d:i.rcu,"class":"icon",transform:"translate(-40, -12.5), scale(0.5)"});var o=l.filter(function(e){return"sgw"===e.type});o.append("path").attr({d:i.sgw,"class":"icon",transform:"translate(-40, -12.5), scale(0.5)"});var f=l.filter(function(e){return"pgw"===e.type});f.append("path").attr({d:i.pgw,"class":"icon",transform:"translate(-40, -12.5), scale(0.5)"});var y=l.filter(function(e){return"mme"===e.type});y.append("path").attr({d:i.mme,"class":"icon",transform:"translate(-40, -12.5), scale(0.5)"}),l.on("mousedown",function(e){m=e,v.classed("hidden",!1).attr("d","M"+m.x+","+m.y+"L"+m.x+","+m.y)}).on("mouseover",function(e){m&&(g=e)}),s.on("mousemove",function(){m&&v.attr("d","M"+m.x+","+m.y+"L"+d3.mouse(this)[0]+","+d3.mouse(this)[1])}).on("mouseup",function(){if(!m||!g)return void M();var e=t.getNodeDataPlaneSuccessors(m)[0].type;return g.type!==e?void M():(P.push({source:m,target:g,data:{id:m.id+"."+g.id,source:m.id,target:g.id}}),O(),void M())}),s.selectAll(".node-container").data(z,function(e){return e.id}).exit().transition(x).attr({opacity:0}).remove(),s.selectAll(".link-container").data(P,function(e){return e.data.id}).exit().transition(x).attr({opacity:0}).remove()};d3.select("body").on("keydown",function(){"Backspace"===d3.event.code&&h&&F(h.data.id),"Enter"===d3.event.code&&y&&(d3.event.preventDefault(),I(y)),"Escape"===d3.event.code&&y&&(y.selected=!1,y=null,C=null,G()),"ArrowRight"===d3.event.code&&(d3.event.preventDefault(),N()),"ArrowLeft"===d3.event.code&&(d3.event.preventDefault(),A()),"ArrowUp"===d3.event.code&&(d3.event.preventDefault(),H()),"ArrowDown"===d3.event.code&&(d3.event.preventDefault(),$())})}]}})}(),function(){angular.module("xos.mcord-slicing").service("SliceGraph",["_","NodePositioner",function(e,t){var c=this,n=new graphlib.Graph;this.buildGraph=function(t){e.forEach(t.nodes,function(e){return n.setNode(e.id,e)}),e.forEach(t.links,function(e){return n.setEdge(e.source,e.target,e)})},this.getLinks=function(){return n.edges().map(function(e){return{source:n.node(e.v),target:n.node(e.w),data:n.edge(e)}})},this.getGraph=function(){return n},this.getNodeSuccessors=function(t){return e.map(n.successors(t.id),function(e){return n.node(e)})},this.getNodePredecessors=function(t){return e.map(n.predecessors(t.id),function(e){return n.node(e)})},this.getNodeDataPlaneSuccessors=function(t){return e.filter(c.getNodeSuccessors(t),function(e){return"data"===e.plane})},this.getUpstreamSinks=function(t){var c=e.reduce(n.sinks(),function(e,t,c){var r=n.node(t);return"upstream"===r.type&&e.push(r),e},[]);return e.map(c,function(e,n){return e.position={top:0,bottom:t.clientHeight,total:c.length,index:n+1},e})},this.positionGraph=function(n){var r=c.getUpstreamSinks(n),o=[];return e.forEach(r,function(e,t){o=o.concat(c.findPredecessor(e))}),r=r.concat(o),r=e.map(r,function(e){return t.getDataPlaneNodePos(e,n)})},this.findPredecessor=function(r){var o=n.predecessors(r.id);o=o.map(function(e,c){e=n.node(e);var i=(r.position.bottom-r.position.top)/r.position.total,a=t.getVpos(r);return e.position={top:a-i/2,bottom:a+i/2,total:o.length,index:c+1},e});var i=e.reduce(o,function(e,t){return e.concat(c.findPredecessor(t))},[]);return o.concat(i)},this.getGraphLinks=function(t){var c=[];return e.forEach(t,function(t){var r=n.inEdges(t.id);e.forEach(r,function(e){c.push({source:n.node(e.v),target:n.node(e.w),data:n.edge(e)})})}),c},this.getDataPlaneForSlice=function(e,t){var c=n.node(n.successors(e.id)[0]),r=n.node(n.successors(c.id)[0]),o=n.node(n.successors(r.id)[0]);return e.sliceId=t,c.sliceId=t,r.sliceId=t,o.sliceId=t,[e,c,r,o]},this.getControlPlaneForSlice=function(c,r){return e.reduce(c,function(e,c){var o=n.node(n.successors(c.id)[1]);if(o=t.getControlPlaneNodePos(o,c),o.sliceId=r,"sgw"===o.type){var i=n.node(n.successors(o.id)[1]);i=t.getControlPlaneNodePos(i,o),i.sliceId=r,e.push(i)}return e.concat(o)},[])},this.activeSlices=[],this.getSliceDetail=function(r){if(r.sliceId&&c.activeSlices.indexOf(r.sliceId)>-1)return[[],[]];var o=e.min(c.activeSlices)?e.min(c.activeSlices)+1:1;c.activeSlices.push(o);var i=function(e){for(var t=!0;t;){var c=e;if(t=!1,"ran-ru"===c.type)return c;var r=n.predecessors(c.id);e=n.node(r[0]),t=!0,r=void 0}}(r),a=c.getDataPlaneForSlice(i,o),s=c.getControlPlaneForSlice(a,o),l=c.getGraphLinks(s),d={name:"Close",id:"close-button-"+o,type:"button",sliceId:o};return d=t.getControlPlaneNodePos(d,s[3]),s.push(d),[s,l]},this.removeActiveSlice=function(e){c.activeSlices.splice(c.activeSlices.indexOf(e),1)}}]).service("NodePositioner",["_","sliceElOrder",function(e,t){var c=this,n=void 0;this.storeEl=function(e){n=e},this.getHpos=function(e,c){var n=t.indexOf(e.type)+1;"mme"===e.type&&(n=t.indexOf("sgw")+1),"button"===e.type&&(n=t.indexOf("pgw")+1);var r=c.clientWidth/(t.length+1)*n;return r},this.getVpos=function(e){var t=e.position.bottom-e.position.top,c=t/(e.position.total+1),n=c*e.position.index+e.position.top;return n},this.getDataPlaneNodePos=function(e){var t=c.getHpos(e,n),r=c.getVpos(e);return e.x=t,e.y=r,e.transform="translate("+t+", "+r+")",e.fixed=!0,e},this.getControlPlaneNodePos=function(e,t){var r=c.getHpos(e,n),o=t.y-75;return e.x=r,e.y=o,e.transform="translate("+r+", "+o+")",e.fixed=!0,e}}]).value("sliceElOrder",["ue","profile","ran-ru","ran-cu","sgw","pgw","upstream"]).constant("mCordSlicingIcons",{mobile:"M26.1,0c0.5,0.2,1.1,0.4,1.6,0.7C28.7,1.4,29,2.4,29,3.5c0,0.2,0,0.4,0,0.6c0,14,0,28.1,0,42.1c0,1-0.2,1.8-0.9,2.6\n  c-0.4,0.5-0.9,0.8-1.5,1c-0.2,0.1-0.3,0.1-0.5,0.2c-7.7,0-15.5,0-23.2,0c-0.5-0.2-1.1-0.4-1.5-0.7c-1-0.7-1.4-1.7-1.4-2.9\n  c0-3.8,0-7.6,0-11.4C0,24.5,0,14.1,0,3.8c0-1,0.2-1.8,0.9-2.6c0.4-0.5,0.9-0.8,1.5-1C2.6,0.1,2.7,0.1,2.9,0C10.6,0,18.4,0,26.1,0z\n   M26.7,43.7c0-12.8,0-25.6,0-38.3c-8.1,0-16.2,0-24.3,0c0,12.8,0,25.6,0,38.3C10.5,43.7,18.6,43.7,26.7,43.7z M16.2,46.6\n  c0-0.9-0.8-1.7-1.7-1.7c-0.9,0-1.7,0.8-1.7,1.7c0,0.9,0.8,1.7,1.7,1.7C15.5,48.3,16.2,47.5,16.2,46.6z M14.5,3.3c0.8,0,1.5,0,2.3,0\n  c0.4,0,0.8,0,1.2,0c0.3,0,0.4-0.1,0.5-0.4c0-0.3-0.2-0.4-0.4-0.4c-0.1,0-0.2,0-0.2,0c-2.2,0-4.4,0-6.6,0c-0.1,0-0.3,0-0.4,0.1\n  c-0.1,0.1-0.3,0.3-0.3,0.4c0,0.1,0.2,0.3,0.3,0.4c0.1,0.1,0.2,0,0.4,0C12.3,3.3,13.4,3.3,14.5,3.3z",profile:"M29,24.4c-0.6,0.2-1.2,0.3-1.8,0.5c-0.2,0-0.2,0.1-0.2,0.3c0,0.9,0.1,1.8,0,2.7c-0.1,0.8-0.7,1.4-1.6,1.4\n    c-0.8,0-1.4-0.7-1.5-1.5c0-0.4,0.1-0.9,0.1-1.3c0-4.5-3.3-8.5-7.8-9.3c-5.1-0.9-9.9,2.2-11.1,7.1C3.8,29.7,7.3,35,12.7,36\n    c0.9,0.2,1.8,0.2,2.7,0.1c0.8-0.1,1.5,0.3,1.7,1.1c0.2,0.8-0.1,1.5-0.9,1.8c-0.3,0.1-0.7,0.2-1,0.2c-0.8,0-1.5,0-2.4,0\n    c-0.2,0.6-0.3,1.3-0.5,1.9c0,0,0,0-0.1,0c-0.1,0-0.2-0.1-0.3-0.1c-0.9-0.3-1.9-0.5-2.8-0.8c0.2-0.6,0.3-1.2,0.5-1.8\n    c0.1-0.2,0-0.3-0.2-0.3c-0.4-0.2-0.8-0.4-1.2-0.6c-0.5-0.3-0.9-0.6-1.4-0.9c-0.5,0.5-0.9,1-1.4,1.4c-0.8-0.8-1.6-1.6-2.4-2.4\n    c0.5-0.5,1-0.9,1.4-1.4c-0.5-0.9-1-1.8-1.5-2.7c-0.1-0.1-0.2-0.1-0.3-0.1c-0.6,0.2-1.2,0.3-1.8,0.5c-0.1-0.5-0.2-0.9-0.4-1.4\n    C0.2,30,0,29.4-0.2,28.8c0,0,0,0,0-0.1c0.6-0.2,1.2-0.3,1.8-0.5c0.2,0,0.2-0.1,0.2-0.3c0-0.9,0-1.9,0-2.8c0-0.2,0-0.2-0.2-0.3\n    c-0.6-0.2-1.2-0.3-1.8-0.5c0,0,0,0,0-0.1c0-0.1,0.1-0.2,0.1-0.3c0.3-0.9,0.5-1.9,0.8-2.8c0.6,0.2,1.2,0.3,1.8,0.5\n    c0.2,0.1,0.3,0,0.3-0.2c0.5-0.8,1-1.6,1.4-2.5c0,0,0.1-0.1,0.1-0.2c-0.5-0.5-1-0.9-1.4-1.4c0.8-0.8,1.6-1.6,2.4-2.4\n    c0.5,0.5,0.9,1,1.3,1.4c0.9-0.5,1.8-1,2.7-1.5c0.1,0,0.1-0.2,0.1-0.3c-0.1-0.6-0.3-1.2-0.5-1.8c0.4-0.1,0.8-0.2,1.1-0.3\n    c0.7-0.2,1.4-0.4,2-0.6c0,0,0,0,0.1,0c0.2,0.6,0.3,1.2,0.5,1.8c0,0.2,0.1,0.2,0.3,0.2c0.9,0,1.9,0,2.8,0c0.2,0,0.2,0,0.3-0.2\n    c0.2-0.6,0.3-1.2,0.5-1.8c0,0,0,0,0.1,0c0.1,0,0.2,0.1,0.3,0.1c0.9,0.3,1.9,0.5,2.8,0.8c-0.2,0.6-0.3,1.2-0.5,1.8\n    c-0.1,0.2,0,0.3,0.2,0.3c0.6,0.3,1.2,0.6,1.7,0.9c0.3,0.2,0.6,0.4,0.9,0.6c0.5-0.5,1-1,1.4-1.4c0.8,0.8,1.6,1.6,2.4,2.4\n    c-0.5,0.5-1,0.9-1.4,1.4c0.5,0.9,1,1.8,1.5,2.7c0.1,0.1,0.2,0.1,0.3,0.1c0.6-0.2,1.2-0.3,1.8-0.5c0.1,0.4,0.2,0.8,0.3,1.1\n    C28.7,23,28.9,23.7,29,24.4C29,24.4,29,24.4,29,24.4z\n    M13.6,20.4c1.2-0.1,2.3-0.4,3.4,0c0.7,0.3,1.3,0.7,1.8,1.4c0.5,0.7,1.1,1.4,1.6,2.2c0.8,1.1,0.9,2.4,0.3,3.7\n    c-0.1,0.3-0.4,0.6-0.3,0.8c0,0.2,0.4,0.4,0.6,0.6c1.7,1.7,3.3,3.3,5,5c1.5,1.6,0.8,4.2-1.4,4.7c-1,0.2-1.9-0.1-2.7-0.8\n    c-1.6-1.6-3.1-3.1-4.7-4.7c-0.2-0.2-0.5-0.5-0.7-0.7c-0.1-0.2-0.3-0.2-0.5-0.1c-0.8,0.1-1.5,0.3-2.3,0.4c-1.3,0.1-2.4-0.3-3.2-1.3\n    c-0.6-0.8-1.3-1.6-1.8-2.5c-0.7-1-0.8-2.1-0.5-3.2c0.2-0.6,0.5-1.3,0.8-1.9C9,24,9.1,24,9.2,24.1c1,1.4,2.1,2.8,3.1,4.2\n    c0.4,0.5,0.6,0.6,1.2,0.4c0.5-0.2,1.1-0.3,1.6-0.5c0.4-0.1,0.7-0.3,0.9-0.7c0.3-0.5,0.7-1,1-1.5c0.3-0.4,0.3-0.7,0-1.1\n    c-1.1-1.4-2.1-2.9-3.2-4.3C13.7,20.6,13.7,20.6,13.6,20.4z",rru:"M18.4,44.2c-2.6,0-5.1,0-7.8,0c0.6-4.7,1.2-9.4,1.9-14c0.4-2.7,0.9-5.5,1.3-8.2c0.1-0.5-0.2-1.1-0.5-1.4\n    c-0.8-0.9-1-2-0.1-2.7c0.6-0.4,1.9-0.5,2.5-0.1c1,0.6,0.8,1.7,0.2,2.7c-0.4,0.6-0.6,1.5-0.5,2.2c1,7,2,13.9,3,20.9\n    C18.4,43.7,18.4,43.9,18.4,44.2z\n    M9.4,7.3c-8.5,4.5-9.5,13.8-5,19.6c1,1.2,2.3,2.3,3.6,3.2c0.9,0.6,1.3,1.2,0.5,2.1c-4.7-1.7-8.4-7-8.6-12.5\n    c-0.2-6,3.2-11.5,8.8-13.8C9,6.3,9.2,6.8,9.4,7.3z\n    M20.3,5.9c5,1.8,8.7,7.2,8.7,12.9c0,6-3.4,11.4-8.5,13.3c-0.5-0.9-0.4-1.5,0.6-2.1c8.5-5.5,8.3-16.8-0.3-22.1\n    c-0.5-0.3-0.8-1.1-1.1-1.6C19.9,6.2,20.1,6.1,20.3,5.9z\n    M9.4,28.9c-3.6-2-5.7-5-5.8-9.2C3.3,15,5.5,11.5,9.6,9.2c0.7,0.9,0.7,1.5-0.3,2.2c-5.5,4.2-5.5,11-0.2,15.4\n    c0.5,0.4,0.6,1.2,0.9,1.8C9.8,28.7,9.6,28.8,9.4,28.9z\n    M19.3,28.5c0.2-0.6,0.3-1.4,0.8-1.8c5.4-4.7,5.2-11.4-0.6-15.6c-0.1-0.1-0.3-0.2-0.5-0.4c0.1-0.5,0.3-1,0.4-1.6\n    c4,2.2,6.2,5.4,6.2,9.8c0.1,4.4-2,7.6-5.7,9.9C19.7,28.7,19.5,28.6,19.3,28.5z\n    M10.2,25.3c-4.6-3.3-4.4-10,0.9-12.4c-0.3,0.7-0.4,1.5-0.9,2.1c-2.1,2.5-2.1,5.4,0,8.1c0.4,0.5,0.4,1.3,0.6,2\n    C10.6,25.2,10.4,25.3,10.2,25.3z\n    M18.4,25c0.2-0.7,0.3-1.6,0.8-2.2c1.8-2.6,1.7-5.4-0.4-7.8c-0.8-1-0.8-1-0.2-2.3c4.6,2.9,4.8,9.1,0.4,12.4\n    C18.8,25.2,18.6,25.1,18.4,25z",rcu:"M0,35.7c0.1-0.4,0.3-0.8,0.7-0.9c0.2-0.1,0.5-0.2,0.8-0.2c2.9,0,5.8,0,8.7,0c0.1,0,0.2,0,0.4,0c0.2,0,0.2-0.1,0.2-0.2\n    c0-0.2,0-0.4,0-0.6c0.1-0.4,0.4-0.7,0.8-0.8c0.1,0,0.2,0,0.3,0c1.7,0,3.4,0,5.1,0c0.8,0,1.2,0.4,1.2,1.2c0,0.5,0,0.4,0.4,0.4\n    c2.9,0,5.8,0,8.7,0c0.9,0,1.5,0.2,1.8,1.1c0,0.2,0,0.3,0,0.5c-0.3,0.8-0.9,1.1-1.7,1.1c-2.9,0-5.8,0-8.6,0c-0.4,0-0.4,0-0.4,0.4\n    c0,0.1,0,0.1,0,0.2c0,0.6-0.4,1-1,1c-1.8,0-3.6,0-5.4,0c-0.4,0-0.7-0.1-0.8-0.5c-0.1-0.2-0.1-0.5-0.2-0.8c0-0.3,0-0.3-0.3-0.3\n    c-3,0-6,0-9,0c-0.4,0-0.7-0.1-1-0.3c-0.3-0.2-0.4-0.5-0.5-0.8C0,36,0,35.9,0,35.7z M14.5,35c-0.5,0-1,0-1.5,0c-0.1,0-0.2,0-0.2,0.2\n    c0,0.5,0,1,0,1.5c0,0.2,0,0.2,0.2,0.2c1,0,2,0,3,0c0.1,0,0.2,0,0.2-0.2c0-0.5,0-1,0-1.4c0-0.2-0.1-0.2-0.2-0.2\n    C15.5,35,15,35,14.5,35z\n    M14.5,31.4c-4,0-8.1,0-12.1,0c-0.5,0-0.9-0.1-1.2-0.5C1,30.7,1,30.4,0.9,30.2c0-0.1,0-0.2,0-0.3c0-5.7,0-11.5,0-17.2\n    c0-0.3,0.1-0.6,0.2-0.9c0.2-0.4,0.6-0.6,1-0.6c0.1,0,0.2,0,0.3,0c8.1,0,16.2,0,24.3,0c0.5,0,0.9,0.1,1.2,0.5\n    c0.1,0.2,0.2,0.4,0.3,0.7c0,0.1,0,0.2,0,0.3c0,5.8,0,11.6,0,17.3c0,0.3-0.1,0.7-0.3,1c-0.3,0.4-0.7,0.5-1.2,0.5c-2.7,0-5.4,0-8.2,0\n    C17.2,31.4,15.9,31.4,14.5,31.4z M4.4,20.6c6.8,0,13.5,0,20.3,0c0-0.1,0-0.2,0-0.2c0-1.6,0-3.3,0-4.9c0-0.2-0.1-0.3-0.3-0.3\n    c-6.6,0-13.1,0-19.7,0c-0.2,0-0.3,0.1-0.3,0.3c0,1.6,0,3.2,0,4.9C4.4,20.5,4.4,20.5,4.4,20.6z M4.4,27.3c6.8,0,13.5,0,20.2,0\n    c0-1.8,0-3.6,0-5.4c-6.8,0-13.5,0-20.2,0C4.4,23.7,4.4,25.5,4.4,27.3z\n    M23.3,16.6c0,0.1,0,0.2,0,0.2c0,0.7,0,1.5,0,2.2c0,0.2-0.1,0.3-0.3,0.3c-3.3,0-6.7,0-10,0c-2.3,0-4.7,0-7,0\n    c-0.2,0-0.3,0-0.3-0.3c0-0.7,0-1.5,0-2.2c0-0.1,0-0.2,0-0.2C11.6,16.6,17.4,16.6,23.3,16.6z M7.7,18.6c0-0.4,0-0.8,0-1.2\n    c0,0-0.1-0.1-0.1-0.1c-0.4,0-0.8,0-1.2,0c0,0.5,0,0.9,0,1.3C6.9,18.6,7.3,18.6,7.7,18.6z M8.4,17.3c0,0.5,0,0.9,0,1.3\n    c0.4,0,0.9,0,1.3,0c0-0.4,0-0.8,0-1.2c0,0-0.1-0.1-0.1-0.1C9.2,17.3,8.8,17.3,8.4,17.3z M10.4,18.6c0.5,0,0.9,0,1.3,0\n    c0-0.4,0-0.9,0-1.3c-0.4,0-0.8,0-1.2,0c0,0-0.1,0.1-0.1,0.1C10.4,17.8,10.4,18.2,10.4,18.6z\n    M14.5,23.2c2.8,0,5.7,0,8.5,0c0.3,0,0.3,0,0.3,0.3c0,0.7,0,1.4,0,2.1c0,0.2-0.1,0.3-0.3,0.3c-4.6,0-9.2,0-13.7,0\n    c-1.1,0-2.2,0-3.3,0c-0.2,0-0.3-0.1-0.3-0.3c0-0.7,0-1.5,0-2.2c0-0.2,0.1-0.3,0.3-0.3C8.8,23.2,11.7,23.2,14.5,23.2z M6.4,25.2\n    c0.4,0,0.8,0,1.2,0c0.1,0,0.1-0.1,0.1-0.1c0-0.3,0-0.7,0-1c0,0-0.1-0.1-0.1-0.1c-0.4,0-0.8,0-1.2,0C6.4,24.4,6.4,24.8,6.4,25.2z\n     M8.4,25.2c0.4,0,0.8,0,1.2,0c0,0,0.1-0.1,0.1-0.2c0-0.2,0-0.5,0-0.7c0-0.5,0.1-0.4-0.4-0.4c-0.3,0-0.6,0-0.9,0\n    C8.4,24.4,8.4,24.8,8.4,25.2z M11.7,23.9c-0.4,0-0.8,0-1.2,0c0,0-0.1,0.1-0.1,0.1c0,0.4,0,0.8,0,1.2c0.5,0,0.9,0,1.3,0\n    C11.7,24.8,11.7,24.4,11.7,23.9z",sgw:"M24.2,11.6c0.5,0.2,0.7,0.6,0.9,1.1c1.3,4.8,2.6,9.5,3.9,14.3c0,0.2,0.1,0.3,0.1,0.5c0,1.8,0,3.6,0,5.4\n    c0,0.9-0.4,1.4-1.4,1.4c-4.1,0-8.1,0-12.2,0c-0.1,0-0.2,0-0.4,0c0,1,0,1.9,0,2.9c0.1,0,0.2,0,0.4,0c3.1,0,6.1,0,9.2,0\n    c0.1,0,0.2,0,0.4,0c0.3,0,0.5,0.3,0.5,0.5c0,0.3-0.2,0.5-0.5,0.6c-0.1,0-0.2,0-0.3,0c-6.8,0-13.7,0-20.5,0c-0.5,0-0.8-0.2-0.8-0.6\n    c0-0.4,0.3-0.6,0.8-0.6c3.1,0,6.2,0,9.3,0c0.1,0,0.2,0,0.4,0c0-1,0-1.9,0-2.9c-0.1,0-0.2,0-0.4,0c-4,0-8.1,0-12.1,0\n    c-0.7,0-1.2-0.2-1.5-0.9c0-2.1,0-4.2,0-6.2c0.1-0.2,0.1-0.3,0.2-0.5C1.4,22,2.7,17.4,4,12.7c0.1-0.5,0.4-0.9,0.9-1.1\n    C11.3,11.6,17.7,11.6,24.2,11.6z M23.9,12.8c-6.2,0-12.5,0-18.7,0C4,17.3,2.7,21.7,1.5,26.1c8.7,0,17.3,0,26,0\n    C26.3,21.7,25.1,17.2,23.9,12.8z M1.2,27.3c0,2,0,3.9,0,5.8c8.9,0,17.8,0,26.7,0c0-1.9,0-3.9,0-5.8C19,27.3,10.1,27.3,1.2,27.3z\n    M12.7,21.1c0.1,0.4,0.2,0.7,0.3,0.8c0.3,0.3,0.8,0.5,1.5,0.5c0.4,0,0.8,0,1-0.1c0.5-0.2,0.7-0.5,0.7-1\n      c0-0.3-0.1-0.5-0.4-0.6c-0.2-0.1-0.6-0.3-1.1-0.4l-0.9-0.2c-0.9-0.2-1.5-0.4-1.8-0.6c-0.6-0.4-0.8-1-0.8-1.8\n      c0-0.7,0.3-1.4,0.8-1.8c0.5-0.5,1.3-0.7,2.4-0.7c0.9,0,1.6,0.2,2.3,0.7c0.6,0.5,0.9,1.1,1,2H16c0-0.5-0.3-0.8-0.7-1.1\n      c-0.3-0.1-0.6-0.2-1-0.2c-0.5,0-0.8,0.1-1.1,0.3c-0.3,0.2-0.4,0.4-0.4,0.8c0,0.3,0.1,0.5,0.4,0.7c0.2,0.1,0.5,0.2,1.1,0.3l1.4,0.3\n      c0.6,0.1,1.1,0.3,1.4,0.6c0.5,0.4,0.7,1,0.7,1.7c0,0.8-0.3,1.4-0.9,1.9c-0.6,0.5-1.4,0.7-2.5,0.7c-1.1,0-1.9-0.2-2.6-0.7\n      c-0.6-0.5-0.9-1.2-0.9-2H12.7z",pgw:"M24.2,11.6c0.5,0.2,0.7,0.6,0.9,1.1c1.3,4.8,2.6,9.5,3.9,14.3c0,0.2,0.1,0.3,0.1,0.5c0,1.8,0,3.6,0,5.4\n    c0,0.9-0.4,1.4-1.4,1.4c-4.1,0-8.1,0-12.2,0c-0.1,0-0.2,0-0.4,0c0,1,0,1.9,0,2.9c0.1,0,0.2,0,0.4,0c3.1,0,6.1,0,9.2,0\n    c0.1,0,0.2,0,0.4,0c0.3,0,0.5,0.3,0.5,0.5c0,0.3-0.2,0.5-0.5,0.6c-0.1,0-0.2,0-0.3,0c-6.8,0-13.7,0-20.5,0c-0.5,0-0.8-0.2-0.8-0.6\n    c0-0.4,0.3-0.6,0.8-0.6c3.1,0,6.2,0,9.3,0c0.1,0,0.2,0,0.4,0c0-1,0-1.9,0-2.9c-0.1,0-0.2,0-0.4,0c-4,0-8.1,0-12.1,0\n    c-0.7,0-1.2-0.2-1.5-0.9c0-2.1,0-4.2,0-6.2c0.1-0.2,0.1-0.3,0.2-0.5C1.4,22,2.7,17.4,4,12.7c0.1-0.5,0.4-0.9,0.9-1.1\n    C11.3,11.6,17.7,11.6,24.2,11.6z M23.9,12.8c-6.2,0-12.5,0-18.7,0C4,17.3,2.7,21.7,1.5,26.1c8.7,0,17.3,0,26,0\n    C26.3,21.7,25.1,17.2,23.9,12.8z M1.2,27.3c0,2,0,3.9,0,5.8c8.9,0,17.8,0,26.7,0c0-1.9,0-3.9,0-5.8C19,27.3,10.1,27.3,1.2,27.3zM17,20.1c-0.5,0.4-1.2,0.6-2.2,0.6H13v3.1h-1.8v-8.7H15c0.9,0,1.5,0.2,2.1,0.7c0.5,0.4,0.8,1.1,0.8,2.1\n      C17.8,18.9,17.6,19.6,17,20.1z M15.7,16.9c-0.2-0.2-0.6-0.3-1-0.3H13v2.6h1.6c0.4,0,0.7-0.1,1-0.3c0.2-0.2,0.3-0.5,0.3-1\n      C16,17.4,15.9,17.1,15.7,16.9z",mme:"M7.9,37.9C8.5,37,9,36.1,9.5,35.2c0.6,0.2,1.2,0.5,1.8,0.6c6.4,1.9,13-2,14.4-8.6c1.3-6.2-2.9-12.4-9.2-13.4\n    c-3.7-0.6-6.9,0.4-9.7,2.8c-0.1,0.1-0.1,0.1-0.2,0.2c0,0,0,0.1-0.1,0.1c0.8,0.8,1.6,1.6,2.5,2.5C5.9,20,3,20.5,0,21.1\n    c0.5-3,1.1-5.9,1.6-8.9c0.8,0.8,1.6,1.7,2.5,2.5c1.2-1.1,2.4-2,3.8-2.6c5.3-2.4,10.5-2.2,15.3,1.3c3.5,2.5,5.4,6,5.8,10.4\n    c0.6,6.8-3.6,13.1-10.2,15.1C15.2,40,11.6,39.7,8.2,38C8.1,38,8,37.9,7.9,37.9z\n    M21.8,27.9c-3.1,0-6.1,0-9.2,0c0-3.3,0-6.6,0-10c0.9,0,1.9,0,2.8,0c0,2.4,0,4.7,0,7.1c2.1,0,4.2,0,6.4,0\n    C21.8,26,21.8,26.9,21.8,27.9z\n    M3.5,34.4c0.9-0.6,1.7-1.2,2.6-1.8c0.5,0.5,1.1,1,1.6,1.5c-0.5,0.9-1,1.8-1.6,2.7C5.1,36.1,4.3,35.3,3.5,34.4z\n    M0.8,29.7c1.1-0.3,2.1-0.5,3.1-0.8c0.3,0.7,0.6,1.3,1,2c-0.8,0.6-1.7,1.2-2.6,1.9C1.7,31.7,1.2,30.7,0.8,29.7z\n    M3.2,24.7c0.1,0.7,0.1,1.4,0.2,2.1c-1,0.3-2,0.5-3.1,0.8c-0.1-1-0.2-1.9-0.2-2.9C1.1,24.7,2.2,24.7,3.2,24.7z"})}(),function(){angular.module("xos.mcord-slicing").service("FormHandler",["LabelFormatter","XosFormHelpers",function(e,t){var c=this,n=this,r=d3.transition().duration(500);this.drawForm=function(e,t,o){var i=t.append("line").attr({"class":"form-line",id:"form-line-"+e.type+"-"+e.id,x1:e.x+10,y1:e.y,x2:e.x+10,y2:e.y+40,opacity:0});i.transition(r).attr({opacity:1});var a=o.append("div").attr({"class":"element-form",id:"form-"+e.type+"-"+e.id}).style({opacity:0}),s=a.append("form");c.addFormfields(e,s);var l=s.append("div").attr({"class":"row"});l.append("div").attr({"class":"col-xs-6"}).append("a").attr({"class":"btn btn-danger","data-parent-node-type":e.type,"data-parent-node-id":e.id}).text("Close").on("click",function(){n.removeForm(d3.select(this).attr("data-parent-node-type"),d3.select(this).attr("data-parent-node-id"),t,o)}),l.append("div").attr({"class":"col-xs-6"}).append("button").attr({type:"button","class":"btn btn-success"}).text("Save").on("click",function(){$("#form-"+e.type+"-"+e.id+" input").each(function(){var e=$(this),t=e.val(),c=e.attr("name");console.log(c,t)})}),a.transition(r).style({opacity:1,top:e.y+95+"px",left:e.x+"px"})},this.removeForm=function(e,t,n,r){c.removeFormByParentNode({type:e,id:t},n,r)},this.removeFormByParentNode=function(e,t,c){c.selectAll("#form-"+e.type+"-"+e.id).transition(r).style({opacity:0}).remove(),t.selectAll("#form-line-"+e.type+"-"+e.id).transition(r).attr({opacity:0}).remove()},this.getFieldValue=function(e,t){return"date"===t&&(e=new Date(e),e=e.getFullYear()+"-"+("0"+e.getMonth()+1).slice(-2)+"-"+("0"+e.getDate()).slice(-2)),e||""},this.addFormField=function(n,r,o){var i=t._getFieldFormat(r);o.append("div").attr({"class":"row"}).append("div").attr({"class":"col-xs-12"}).append("label").text(n?e.format(n):"test").append("input").attr({type:i,name:n,value:c.getFieldValue(r,i),"class":"form-control"})},this.addFormfields=function(e,t){if(c.addFormField("name",e.name,t),!e.model)return c.addFormField(null,null,t);var n=Object.keys(e.model);_.forEach(n,function(n){c.addFormField(n,e.model[n],t)})}}])}(),angular.module("xos.mcord-slicing").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosMcordTopology.js b/xos/core/xoslib/static/js/xosMcordTopology.js
index c1decb6..b6f7bcf 100644
--- a/xos/core/xoslib/static/js/xosMcordTopology.js
+++ b/xos/core/xoslib/static/js/xosMcordTopology.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.mcordTopology",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(t){t.state("topology",{url:"/",template:"<m-cord-topology></m-cord-topology>"})}]).config(["$httpProvider",function(t){t.interceptors.push("NoHyperlinks")}]).factory("_",["$window",function(t){return t._}]).service("Traffic",["$http","$q",function(t,n){this.get=function(){var e=n.defer();return t.get("videoLocal.txt").then(function(t){e.resolve(t.data)})["catch"](function(t){console.log(t),e.resolve(10*Math.random())}),e.promise}}]).directive("mCordTopology",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",template:"",controller:["$element","$interval","$rootScope","_","$http","TopologyElements","NodeDrawer","Traffic",function(t,n,e,r,a,i,o,c){var s=t[0],u=[],l=[],d=0,p=1,f=5,h=function(t){return r.filter(t,function(t){return t.name.indexOf("bbu")>=0})},m=function(t){return i.fakedInstance},y=function(){d3.select("svg").style("width",s.clientWidth+"px").style("height",s.clientHeight+"px"),u=i.nodes,l=i.links,c.get().then(function(t){if(d)if(t===d)p=p;else{var n=t-d;n>0?p+=n/f:p-=-1*n/f}else p=2;return.2>p&&(p=.2),d=t,a.get("/api/core/xos/instances")}).then(function(t){b(h(t.data)),w(m(t.data)),V(g,u,l)})["catch"](function(t){throw new Error(t)})},v=d3.layout.force(),g=d3.select(s).append("svg").style("width",s.clientWidth+"px").style("height",s.clientHeight+"px"),x=(g.append("g").attr({"class":"link-container"}),g.append("g").attr({"class":"node-container"}),function(t,n){return t.map(function(t){console.log(r.find);var e=r.findIndex(n,{id:t.source}),a=r.findIndex(n,{id:t.target});return{source:e,target:a,value:1,id:"link-"+e+"-"+a,type:t.source.indexOf("fabric")>=0?"big":"small"}})}),H=function(t){return r.map(t,function(t){return"fabric"!==t.type?t:(t.x=t.x*Z,t.y=t.y*M,t)})},b=function(t){var n=s.clientWidth/2/(t.length+1),e=t.map(function(t,e){return{type:"bbu",name:t.name,id:"bbu-"+t.id,fixed:!0,y:3*M,x:n*(e+1)}}),r=e.map(function(t){return{source:t.id,target:"fabric4"}});t.forEach(function(t,a){e.push({type:"rru",name:"rru",id:"rru-"+t.id,fixed:!0,y:4*M,x:n*(a+1)}),r.push({source:"rru-"+t.id,target:"bbu-"+t.id})}),u=u.concat(e),l=l.concat(r)},w=function(t){var n=s.clientWidth/2/(t.length+1),e=t.map(function(t,e){return{type:t.name.substring(0,3),name:t.name,id:t.name.substring(0,3)+"-"+t.id,fixed:!0,y:3*M,x:s.clientWidth/2+n*(e+1)}}),r=e.map(function(t){return{source:t.id,target:"fabric4"}});u=u.concat(e),l=l.concat(r)},Z=void 0,M=void 0;Z=s.clientWidth/3,M=s.clientHeight/5;var V=function(t,n,e){Z=s.clientWidth/3,M=s.clientHeight/5,e=x(e,n),n=H(n),console.log(n),v.nodes(n).links(e).size([s.clientWidth,s.clientHeight]).charge(-20).chargeDistance(200).linkDistance(80).linkStrength(.1).start();var r=d3.select(".link-container"),a=d3.select(".node-container");o.drawFabricBox(a,Z,M);var i=r.selectAll(".link").data(e,function(t){return t.id});i.enter().append("line").attr({"class":function(t){return"link "+t.type},"stroke-width":p,id:function(t){return t.id},opacity:0}).transition().duration(1e3).attr({opacity:1}),i.transition().duration(1e3).attr({"stroke-width":p,opacity:1}),i.exit().remove();var c=a.selectAll(".node").data(n,function(t){return t.id}),u=c.enter().append("g",function(t){return t.interfaceCfgIdentifier}).attr({"class":function(t){return t.type+" node"},transform:function(t){return"translate("+t.x+", "+t.y+")"}});o.drawBbus(u.filter(".bbu")),o.drawRrus(u.filter(".rru")),o.drawFabric(u.filter(".fabric")),o.drawOthers(u.filter(function(t){return console.log(t.type),"MME"===t.type||"SGW"===t.type||"PGW"===t.type||"Vid"===t.type}));var l=c.exit();o.removeElements(l),v.on("tick",function(){i.attr("x1",function(t){return t.source.x}).attr("y1",function(t){return t.source.y}).attr("x2",function(t){return t.target.x}).attr("y2",function(t){return t.target.y}),c.attr("transform",function(t){return"translate("+t.x+","+t.y+")"})})};y()}]}}),angular.module("xos.mcordTopology").run(["$templateCache",function(t){t.put("templates/users-list.tpl.html",'<div class="row">\n  <div class="col-xs-12">\n    <h1>Users List</h1>\n    <p>This is only an example view.</p>\n  </div>\n</div>\n<div class="row">\n  <div class="col-xs-4">Email</div>\n  <div class="col-xs-4">First Name</div>\n  <div class="col-xs-4">Last Name</div>\n</div>  \n<div class="row" ng-repeat="user in vm.users">\n  <div class="col-xs-4">{{user.email}}</div>\n  <div class="col-xs-4">{{user.firstname}}</div>\n  <div class="col-xs-4">{{user.lastname}}</div>\n</div>  ')}]),angular.module("xos.mcordTopology").constant("TopologyElements",{nodes:[{id:"fabric4",type:"fabric",name:"fabric4",fixed:!0,x:1.5,y:1.5}],links:[],fakedInstance:[{humanReadableName:"MME",name:"MME"},{humanReadableName:"PGW",name:"PGW"},{humanReadableName:"SGW",name:"SGW"},{humanReadableName:"Video Server",name:"Video Server"}],icons:{bbu:"M11.08,4.66H24.76l6.81,6.82H4.23Z M4.24,18.34V13.21H31.6v5.13H4.24Zm25.64-1.72V14.94H28.19v1.69h1.68Zm-13.65-1.7v1.69h1.69V14.93H16.22Zm-3.42,0v1.69h1.68V14.93H12.8Zm-3.42,0v1.69h1.68V14.93H9.38ZM6,14.93v1.69H7.64V14.93H6Z M32.8,33.23H3V11.42l0,0c1.17-1.16,2.54-2.5,3.87-3.8S9.59,5,10.72,3.87l0,0H25.08l0,0C26.25,5,27.6,6.32,28.9,7.61s2.68,2.63,3.83,3.78l0,0v0.06ZM3.3,33H32.53l0-21.43C31.36,10.39,30,9.07,28.71,7.8S26.09,5.22,25,4.1H10.86C9.75,5.21,8.41,6.52,7.12,7.77s-2.67,2.61-3.83,3.76V33Z M4.24,25.18V20.05H31.6v5.13H4.24Zm24-1.73h1.68V21.78H28.19v1.67Zm-12,0H17.9V21.78H16.21v1.68Zm-1.73-1.68H12.81v1.67h1.68V21.78Zm-3.43,1.68V21.78H9.38v1.69h1.68ZM6,23.46H7.64V21.78H6v1.68Z M31.6,26.89V32H4.24V26.89H31.6Zm-3.4,1.72V30.3h1.68V28.61H28.19Zm-10.28,0H16.22V30.3h1.68V28.62Zm-3.43,1.69V28.62H12.8v1.69h1.68Zm-3.42,0V28.62H9.38v1.69h1.68ZM7.65,28.62H6v1.67H7.65V28.62Z","switch":"M10,20a10,10,0,0,1,10-10h70a10,10,0,0,1,10,10v70a10,10,\n            0,0,1-10,10h-70a10,10,0,0,1-10-10zM60,26l12,0,0-8,18,13-18,13,0\n            -8-12,0zM60,60l12,0,0-8,18,13-18,13,0-8-12,0zM50,40l-12,0,0-8\n            -18,13,18,13,0-8,12,0zM50,74l-12,0,0-8-18,13,18,13,0-8,12,0z",rru:"M18.11,11a2.25,2.25,0,0,1,2.13,1.53A2.2,2.2,0,0,1,19.52,15a0.74,0.74,0,0,0-.3.61A7.49,7.49,0,0,0,20,19.35c2,4.55,3.94,9.13,5.89,13.7a1.14,1.14,0,0,1-.59,1.64A1.11,1.11,0,0,1,23.86,34q-0.53-1.2-1-2.41a0.38,0.38,0,0,0-.41-0.28H13.78a0.36,0.36,0,0,0-.39.26q-0.51,1.24-1.06,2.47a1.11,1.11,0,0,1-1.14.67,1.07,1.07,0,0,1-1-.89,1.47,1.47,0,0,1,.1-0.75q2.84-6.66,5.7-13.32a4.06,4.06,0,0,1,.18-0.42A6.39,6.39,0,0,0,17,15.53,0.58,0.58,0,0,0,16.74,15,2.21,2.21,0,0,1,16,12.5,2.26,2.26,0,0,1,18.11,11ZM21.74,29.1c-0.32-.74-0.61-1.43-0.92-2.12a0.35,0.35,0,0,0-.27-0.14H15.66a0.33,0.33,0,0,0-.26.11c-0.32.7-.62,1.41-0.93,2.15h7.26Zm-5.31-4.55h3.37L18.1,20.63Z M2.23,13.56A16,16,0,0,1,6.76,2.16a1.68,1.68,0,0,1,.8-0.46,1.06,1.06,0,0,1,1.18.59,1.16,1.16,0,0,1-.23,1.37A14.48,14.48,0,0,0,6.19,6.77a13.57,13.57,0,0,0,1.9,15.59l0.46,0.49a1.16,1.16,0,1,1-1.68,1.59,15.6,15.6,0,0,1-4.41-8.64C2.32,14.95,2.28,14.07,2.23,13.56Z M34,13.84a15.51,15.51,0,0,1-4.54,10.52,1.19,1.19,0,0,1-1.65.18,1.17,1.17,0,0,1,0-1.77,13.81,13.81,0,0,0,2.79-4.1,13.6,13.6,0,0,0-2.7-14.91A1.8,1.8,0,0,1,27.41,3,1.08,1.08,0,0,1,28,1.8,1.15,1.15,0,0,1,29.38,2a15.59,15.59,0,0,1,2.51,3.28A16.47,16.47,0,0,1,34,13.84Z M10.93,21.6A1.33,1.33,0,0,1,9.87,21a11.06,11.06,0,0,1-2.8-5.27A11.22,11.22,0,0,1,9.8,5.51l0.27-.28a1.16,1.16,0,1,1,1.64,1.63,8.62,8.62,0,0,0-2.06,3.22A8.87,8.87,0,0,0,11.18,19c0.18,0.23.4,0.44,0.59,0.66A1.13,1.13,0,0,1,11.95,21,1.08,1.08,0,0,1,10.93,21.6Z M29.47,13.57a11.11,11.11,0,0,1-3.27,7.64,1.18,1.18,0,0,1-1.51.21,1.13,1.13,0,0,1-.43-1.4,2.06,2.06,0,0,1,.39-0.54,8.85,8.85,0,0,0,2.49-5.89A9,9,0,0,0,24.64,7a1.85,1.85,0,0,1-.44-0.85A1,1,0,0,1,24.82,5a1.07,1.07,0,0,1,1.3.21,20.11,20.11,0,0,1,1.79,2.31A11.09,11.09,0,0,1,29.47,13.57Z M11.3,13.18a6.73,6.73,0,0,1,2-4.73,1.15,1.15,0,0,1,1.45-.2,1.12,1.12,0,0,1,.49,1.32,1.58,1.58,0,0,1-.33.53,4.49,4.49,0,0,0,0,6.26,1.16,1.16,0,1,1-1.7,1.57A6.81,6.81,0,0,1,11.3,13.18Z M24.94,13.14A6.9,6.9,0,0,1,23,18a1.16,1.16,0,1,1-1.7-1.58,4.5,4.5,0,0,0,0-6.29A1.16,1.16,0,1,1,23,8.5,6.75,6.75,0,0,1,24.94,13.14Z"}}),angular.module("xos.mcordTopology").service("NodeDrawer",["TopologyElements",function(t){var n=500,e=!1;this.drawFabricBox=function(t,n,r){if(!e){var a=t.append("g").attr({transform:"translate("+(n-25)+", "+(r-25)+")"});a.append("rect").attr({width:n+50,height:r+50,"class":"fabric-container"}),e=!0}},this.drawBbus=function(e){e.append("rect").attr({"class":function(t){return t.type},width:30,height:30,x:-15,y:-15,opacity:0}).transition().duration(n).attr({r:15,opacity:1}),e.append("path").attr({"class":function(t){return t.type+" antenna"},opacity:0,d:function(){return t.icons.bbu},transform:"translate(-18, -18)"}).transition().duration(n).attr({opacity:1}),e.append("text").attr({"text-anchor":"start",y:25,x:5,opacity:0}).text(function(t){return"vBBU "+t.name.substr(t.name.length-1,1)}).transition().duration(2*n).attr({opacity:1})},this.drawRrus=function(e){e.append("circle").attr({"class":function(t){return t.type+"-shadow"},r:0,opacity:0}).transition().duration(2*n).attr({r:40,opacity:1}),e.append("path").attr({"class":function(t){return t.type+" antenna"},opacity:0,d:function(){return t.icons.rru},transform:"translate(-18, -18)"}).transition().duration(n).attr({opacity:1})},this.drawFabric=function(e){e.append("rect").attr({width:30,height:30,x:-15,y:-15}),e.append("path").attr({"class":function(t){return t.type},opacity:0,d:function(){return t.icons["switch"]},transform:"translate(-22, -22), scale(0.4)"}).transition().duration(n).attr({opacity:1})},this.drawOthers=function(e){e.append("rect").attr({"class":function(t){return t.type},width:30,height:30,x:-15,y:-15,opacity:0}).transition().duration(n).attr({r:15,opacity:1}),e.append("path").attr({"class":function(t){return t.type+" antenna"},opacity:0,d:function(){return t.icons.bbu},transform:"translate(-18, -18)"}).transition().duration(n).attr({opacity:1}),e.append("text").attr({"text-anchor":"start",y:25,x:-12,opacity:0}).text(function(t){return t.name.toUpperCase()}).transition().duration(2*n).attr({opacity:1})},this.removeElements=function(t){t.transition().duration(n).attr({opacity:0}).remove()}}]),angular.module("xos.mcordTopology").run(["$location",function(t){t.path("/")}]);
diff --git a/xos/core/xoslib/static/js/xosOpenVPNDashboard.js b/xos/core/xoslib/static/js/xosOpenVPNDashboard.js
index 456dfcb..0639110 100644
--- a/xos/core/xoslib/static/js/xosOpenVPNDashboard.js
+++ b/xos/core/xoslib/static/js/xosOpenVPNDashboard.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.openVPNDashboard",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(n){n.state("openVPNList",{url:"/",template:"<vpn-list></vpn-list>"})}]).config(["$compileProvider",function(n){n.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|blob):/)}]).service("Vpn",["$http","$q",function(n,t){this.getOpenVpnTenants=function(){var e=t.defer();return n.get("/api/tenant/openvpn/list/").then(function(n){e.resolve(n.data)})["catch"](function(n){e.reject(n)}),e.promise}}]).config(["$httpProvider",function(n){n.interceptors.push("NoHyperlinks")}]).directive("vpnList",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/openvpn-list.tpl.html",controller:["Vpn",function(n){var t=this;n.getOpenVpnTenants().then(function(n){t.vpns=n;for(var e=0;e<t.vpns.length;e++){var i=new Blob([t.vpns[e].script_text],{type:"text/plain"});t.vpns[e].script_text=(window.URL||window.webkitURL).createObjectURL(i)}})["catch"](function(n){throw new Error(n)})}]}}),angular.module("xos.openVPNDashboard").run(["$templateCache",function(n){n.put("templates/openvpn-list.tpl.html",'<div style="display: table;">\n  <div class="vpn-row">\n    <h1 class="vpn-cell">VPN List</h1>\n  </div>\n  <div class="vpn-row">\n    <div class="vpn-cell vpn-header">ID</div>\n    <div class="vpn-cell vpn-header">VPN Network</div>\n    <div class="vpn-cell vpn-header">VPN Subnet</div>\n    <div class="vpn-cell vpn-header">Script Link</div>\n  </div>\n  <div class="vpn-row" ng-repeat="vpn in vm.vpns">\n    <div class="vpn-cell">{{ vpn.id }}</div>\n    <div class="vpn-cell">{{ vpn.server_network }}</div>\n    <div class="vpn-cell">{{ vpn.vpn_subnet }}</div>\n    <div class="vpn-cell">\n      <a download="connect-{{ vpn.id }}.vpn" ng-href="{{ vpn.script_text }}">Script</a>\n    </div>\n  </div>\n</div>\n'),n.put("templates/users-list.tpl.html",'<xos-table config="vm.tableConfig" data="vm.users"></xos-table>')}]),angular.module("xos.openVPNDashboard").run(["$location",function(n){n.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosServiceGrid.js b/xos/core/xoslib/static/js/xosServiceGrid.js
index 103c739..1837fcb 100644
--- a/xos/core/xoslib/static/js/xosServiceGrid.js
+++ b/xos/core/xoslib/static/js/xosServiceGrid.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.serviceGrid",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(e){e.state("serviceGrid",{url:"/",template:"<service-grid></service-grid>"}).state("serviceGraph",{url:"/graph",template:"<service-graph></service-graph>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).directive("serviceGrid",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/service-grid.tpl.html",controller:["Services","ToscaEncoder","_",function(e,t,n){var r=this;this.tableConfig={columns:[{label:"Status",prop:"status",type:"icon",formatter:function(e){var t=parseInt(e.backend_status.match(/^[0-9]/)[0]);switch(t){case 0:return"time";case 1:return"ok";case 2:return"remove"}}},{label:"Name",prop:"name",link:function(e){return""+e.view_url.replace(/\$[a-z]+\$/,e.id)}},{label:"Kind",prop:"kind"},{label:"Enabled",prop:"enabled",type:"boolean"}],filter:"field",order:{field:"name"},actions:[{label:"export",icon:"export",cb:function(e){r.tosca="",t.serviceToTosca(e).then(function(e){r.showFeedback=!0,r.tosca=e})}}]},e.query().$promise.then(function(e){r.services=n.map(e,function(e){return e.status=0!==parseInt(e.backend_status.match(/^[0-9]/)[0]),e})})["catch"](function(e){throw new Error(e)})}]}}),function(){angular.module("xos.serviceGrid").service("ToscaEncoder",["$q","_","ArchiveManager","ServiceEncoder","SlicesEncoder",function(e,t,n,r,o){var i=this,a={tosca_definitions_version:"tosca_simple_yaml_1_0",description:"",imports:["custom_types/xos.yaml"],topology_template:{node_templates:{}}};this.toYml=function(e){return jsyaml.dump(e).replace(/'/g,"")},this["export"]=function(e){n.download(e.name);var t=i.toYml(a);return t},this.serviceToTosca=function(t){n.createArchive(),a.topology_template.node_templates={},a.description="Just enough Tosca to get the "+t.humanReadableName+" service up and running";var s=e.defer();return r.formatServiceProperties(t,a).then(function(e){return o.getServiceSlices(t,e)}).then(function(e){return r.getServiceRequirements(t,e)}).then(function(e){n.addFile(t.name+"_service.yaml",i.toYml(e)),i["export"](t),s.resolve(i.toYml(e))})["catch"](function(e){s.reject(e)}),s.promise}}])}(),angular.module("xos.serviceGrid").run(["$templateCache",function(e){e.put("templates/service-graph.tpl.html",'<div class="row">\n  <div class="col-sm-10">\n    <h1>Graph</h1>\n  </div>\n  <div class="col-sm-2">\n    <!-- <a href="/admin/core/service/add" class="btn btn-success btn-block">\n      <i class="glyphicon glyphicon-plus"></i>\n      Add Service\n    </a> -->\n    <a href="#/" class="btn btn-default btn-block">\n      Service List\n    </a>\n  </div>\n</div>\n<xos-side-panel config="vm.panelConfig" show="vm.panelShow">\n  <h1>\n    {{vm.selectedNode.name}}\n    <small>\n      <i class="glyphicon glyphicon-{{vm.selectedNode.icon}}"></i>\n    </small>\n  </h1>\n  <table class="table">\n    <tr>\n      <td>Kind:</td>\n      <td>{{vm.selectedNode.kind}}</td>\n    </tr>\n    <tr>\n      <td>Enabled:</td>\n      <td>{{vm.selectedNode.enabled}}</td>\n    </tr>\n    <tr>\n      <td>Status:</td>\n      <td>{{vm.selectedNode.backend_status}}</td>\n    </tr>\n  </table>\n  <a ng-click="vm.exportToTosca(vm.selectedNode)" class="btn btn-primary">\n    Export to TOSCA\n    <i class="glyphicon glyphicon-export"></i>\n  </a>\n</xos-side-panel>'),e.put("templates/service-grid.tpl.html",'<div class="row">\n  <div class="col-md-10 table-responsive">\n    <xos-table config="vm.tableConfig" data="vm.services"></xos-table>\n  </div>\n  <div class="col-md-2">\n    <!-- <a href="/admin/core/service/add" class="btn btn-success btn-block">\n      <i class="glyphicon glyphicon-plus"></i>\n      Add Service\n    </a> -->\n    <a href="#/graph" class="btn btn-default btn-block">\n      Tenancy Graph\n    </a>\n  </div>\n</div>\n\n<div class="row">\n  <div class="col-xs-12">\n    <div class="alert alert-info" ng-show="vm.showFeedback">\n      Remember that you should copy any key artifact inside the container in <pre>/opt/xos/tosca</pre>!\n    </div>\n  </div>\n</div>\n\n<pre ng-show="vm.tosca">\n{{vm.tosca}}\n</pre>'),e.put("templates/users-list.tpl.html",'<xos-table config="vm.tableConfig" data="vm.users"></xos-table>')}]);var _slicedToArray=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(c){o=!0,i=c}finally{try{!r&&s["return"]&&s["return"]()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){angular.module("xos.serviceGrid").service("SlicesEncoder",["$q","_","Slices","SiteEncoder","ImageEncoder","NetworkEncoder",function(e,t,n,r,o,i){var a=this;this.buildTosca=function(n,a,s){var c={},l=e.defer();return n=t.reduce(n,function(e,t){if(e[t.name]={type:"tosca.nodes.Slice",properties:{network:t.network},requirements:[{management:{node:"management",relationship:"tosca.relationships.ConnectsToNetwork"}}]},angular.isDefined(s)){var n={};n[s+"_service"]={node:"service#"+s,relationship:"tosca.relationships.MemberOfService"},e[t.name].requirements.push(n)}return angular.isDefined(t.description)&&(e[t.name].description=t.description),angular.isDefined(t.site)&&(c[t.name+"#site"]=r.buildTosca(t.site,a)),angular.isDefined(t.default_image)&&(c[t.name+"#image"]=o.buildTosca(t.default_image,a)),angular.isDefined(t.networks)&&t.networks.length>0&&(c[t.name+"#management"]=i.getSliceNetworks(t,a)),e},{}),Object.keys(c).length>0?!function(){var t={site:"tosca.relationships.MemberOfSite",image:"tosca.relationships.DefaultImage"};a.topology_template.node_templates.management={type:"tosca.nodes.network.Network.XOS",properties:{"no-create":!0,"no-delete":!0,"no-update":!0}},e.all(c).then(function(e){var r=!0,o=!1,i=void 0;try{for(var s,c=Object.keys(e)[Symbol.iterator]();!(r=(s=c.next()).done);r=!0){var u=s.value,d=u.split("#"),p=_slicedToArray(d,2),v=p[0],m=p[1];if(angular.isDefined(t[m])){n[v].requirements||(n[v].requirements=[]);var f=_slicedToArray(e[u],2),h=f[0],g=f[1],y={},b=void 0;b="site"===m?g.name:m+"#"+g.name,y[m]={node:b,relationship:t[m]},n[v].requirements.push(y),angular.extend(a,h)}}}catch(_){o=!0,i=_}finally{try{!r&&c["return"]&&c["return"]()}finally{if(o)throw i}}angular.extend(a.topology_template.node_templates,n),l.resolve(a)})["catch"](function(e){throw new Error(e)})}():(angular.extend(a.topology_template.node_templates,n),l.resolve(a)),l.promise},this.getServiceSlices=function(t,r){var o=e.defer();return n.query({service:t.id}).$promise.then(function(e){return a.buildTosca(e,r,t.name)}).then(function(e){o.resolve(e)}),o.promise}}])}(),function(){angular.module("xos.serviceGrid").service("SiteEncoder",["$q","Sites",function(e,t){this.buildTosca=function(n,r){var o=e.defer();return t.get({id:n}).$promise.then(function(e){var t={};t[""+e.name]={type:"tosca.nodes.Site"},angular.extend(r.topology_template.node_templates,t),o.resolve([r,e])})["catch"](o.reject),o.promise}}])}(),function(){angular.module("xos.uiComponents").directive("xosSidePanel",function(){return{restrict:"E",scope:{config:"=",show:"="},template:'\n        <div class="xos-side-panel-content {{vm.classes.join(\' \')}}">\n          <div class="row">\n            <div class="col-xs-12">\n              <button type="button" class="close" ng-click="vm.dismiss()">\n                <span aria-hidden="true">&times;</span>\n              </button>\n            </div>\n          </div>\n          <div class="row">\n            <div class="col-xs-12" ng-transclude></div>\n          </div>\n        </div>\n      ',transclude:!0,bindToController:!0,controllerAs:"vm",controller:["$scope","$timeout","_",function(e,t,n){var r=this;console.log(this.show),this.classes=[],this.classes.push(this.config.position),this.dismiss=function(){r.show=!1,r.classes=r.toggleClass(r.classes),t(function(){return n.remove(r.classes,function(e){return"out"===e})},500)},this.toggleClass=function(e){return e.indexOf("in")>-1?(n.remove(r.classes,function(e){return"in"===e}),r.classes.push("out"),e):(n.remove(r.classes,function(e){return"out"===e}),r.classes.push("in"),e)},e.$watch(function(){return r.show},function(e){angular.isDefined(e)&&e&&e===!0&&(r.classes=r.toggleClass(r.classes))})}]}})}(),function(){angular.module("xos.serviceGrid").service("ServiceEncoder",["$q","ArchiveManager","Tenants","Services",function(e,t,n,r){var o={fabric:"tosca.nodes.FabricService",onos:"tosca.nodes.ONOSService",vCPE:"tosca.nodes.VSGService",vOLT:"tosca.nodes.VOLTService",vROUTER:"tosca.nodes.VRouterService",VTN:"tosca.nodes.VTNService",vTR:"tosca.nodes.Service"};this.formatServiceProperties=function(n,r){var i=e.defer(),a="service#"+n.name;r.topology_template.node_templates[a]={},r.topology_template.node_templates[a].type=o[n.kind]||"tosca.nodes.Service";var s={properties:{kind:n.kind}};return angular.isDefined(n.view_url)&&(s.properties.view_url=n.view_url),angular.isDefined(n.icon_url)&&(s.properties.icon_url=n.icon_url),angular.isDefined(n.private_key_fn)&&(s.properties.private_key_fn=n.private_key_fn),angular.isDefined(n.public_key)&&(t.addFile(n.name+"_rsa.pub",n.public_key),s.properties.public_key="{ get_artifact: [ SELF, pubkey, LOCAL_FILE] }",s.artifacts={pubkey:"/opt/xos/tosca/"+n.name+"/"+n.name+"_rsa.pub"},r.topology_template.node_templates[a].artifacts=s.artifacts),r.topology_template.node_templates[a].properties=s.properties,i.resolve(r),i.promise},this.getServiceRequirements=function(t,o){var i=e.defer();return n.query({subscriber_service:t.id}).$promise.then(function(t){var n=[];return t=_.uniqBy(t,"provider_service"),_.forEach(t,function(e){n.push(r.get({id:e.provider_service}).$promise)}),e.all(n)}).then(function(e){var n=_.reduce(e,function(e,t){return e.concat(t.name)},[]);if(n=_.reduce(n,function(e,t){var n=t+"_tenant",r={};return r[n]={node:"service#"+t,relationship:"tosca.relationships.TenantOfService"},e.concat(r)},[]),n.length>0){_.forEach(n,function(e){var t=e[Object.keys(e)[0]].node;o.topology_template.node_templates[t]={type:"tosca.nodes.Service",properties:{"no-create":!0,"no-delete":!0,"no-update":!0}}});var r="service#"+t.name;o.topology_template.node_templates[r].requirements=n}i.resolve(o)}),i.promise}}])}();var _slicedToArray=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(c){o=!0,i=c}finally{try{!r&&s["return"]&&s["return"]()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){angular.module("xos.serviceGrid").service("Graph",["$q","Tenants","Services","Subscribers",function(e,t,n,r){var o=new graphlib.Graph,i=!1,a=function(){var i=e.defer();return e.all([t.query().$promise,n.query().$promise,r.query().$promise]).then(function(e){var t=_slicedToArray(e,3),n=t[0],r=t[1];t[2];r.forEach(function(e){return o.setNode(e.id,angular.extend(e,{type:"service"}))}),n.filter(function(e){return e.subscriber_service&&e.provider_service}).forEach(function(e){return o.setEdge(e.subscriber_service,e.provider_service,e,e.name)}),i.resolve(o)}),i.promise};this.getGraph=function(){var t=e.defer();return i?t.resolve(o):a().then(function(e){i=!0,t.resolve(e)})["catch"](console.log),{$promise:t.promise}}}]).directive("serviceGraph",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/service-graph.tpl.html",controller:["$scope","$element","GraphService","Graph","ToscaEncoder",function(e,t,n,r,o){var i=void 0,a=t[0],s=void 0,c=void 0,l=void 0,u=void 0,d=this;this.panelConfig={position:"right"};var p=function(e,t){return t.x>e.x?e.x+(t.x-e.x)/2:t.x+(e.x-t.x)/2},v=function(e,t){return t.y>e.y?Math.round(e.y+(t.y-e.y)/2):Math.round(t.y+(e.y-t.y)/2)},m=function(){s.attr("cx",function(e){return e.x}).attr("cy",function(e){return e.y}).attr({transform:function(e){return"translate("+e.x+", "+e.y+")"}}),i.selectAll(".link").attr("x1",function(e){return e.source.x}).attr("y1",function(e){return e.source.y}).attr("x2",function(e){return _(e)[0]}).attr("y2",function(e){return _(e)[1]}),i.selectAll(".link-text").attr("x",function(e){return p(e.source,{x:_(e)[0],y:_(e)[1]})}).attr("y",function(e){return v(e.source,{x:_(e)[0],y:_(e)[1]})}).attr("transform",function(e){var t=p(e.source,{x:_(e)[0],y:_(e)[1]}),n=v(e.source,{x:_(e)[0],y:_(e)[1]});return"rotate(-30, "+t+", "+n+")"})},f=1,h=1,g=function(e,t,n){var r=t.node(e),o=a.clientWidth/(n+1);if(t.nodeEdges(e).length>0){var i={y:a.clientHeight/4,x:o*f,fixed:!0};angular.extend(r,i),f+=1}else{var i={y:a.clientHeight/2+a.clientHeight/4,x:(o+o/2)*h,fixed:!0};angular.extend(r,i),h+=1}return r};r.getGraph().$promise.then(function(t){u=t.edges().map(function(e){return{source:t.node(e.v),target:t.node(e.w),tenant:t.edge(e)}});var n=graphlib.alg.components(t).reduce(function(e,t){return e.length>t.length?e:t}).length;c=t.nodes().reverse().map(function(e){return g(e,t,n)}),y(a),b();var r=d3.layout.force().nodes(c).links(u).charge(-1060).gravity(.1).linkDistance(200).size([a.clientWidth,a.clientHeight]).on("tick",m).start();l=i.selectAll(".link-container").data(u).enter().insert("g").attr("class","link-container"),l.insert("line").attr("class","link").attr("marker-end","url(#arrow)");i.selectAll(".link-container").data(r.links()).insert("text").attr({"class":"link-text","text-anchor":"start"}).text(function(e){return""+e.tenant.humanReadableName});s=i.selectAll(".node").data(c).enter().append("g").call(r.drag).on("mousedown",function(t){e.$apply(function(){if("XOS"!==t.name){d.panelShow=!0;var e=parseInt(t.backend_status.match(/^[0-9]/)[0]);switch(console.log(e),e){case 0:t.icon="time";break;case 1:t.icon="ok";break;case 2:t.icon="remove"}d.selectedNode=t}}),d3.event.stopPropagation()}),s.append("circle").attr({"class":function(e){return"node "+(e.type||"")},r:10}),s.append("text").attr({"text-anchor":"middle","alignment-baseline":"middle"}).text(function(e){return e.humanReadableName||e.name}),s.select("circle").attr({r:function(e){var t=d3.select(this).node().parentNode,n=d3.select(t).select("text").node().getBBox(),r=n.width/2+10;return e.nodeWidth=2*r,r}})});var y=function(e){d3.select(e).select("svg").remove(),i=d3.select(e).append("svg").style("width",e.clientWidth+"px").style("height",e.clientHeight+"px")},b=function(){i.append("svg:defs").selectAll("marker").data(["arrow"]).enter().append("svg:marker").attr("id",String).attr("viewBox","0 -5 10 10").attr("refX",10).attr("refY",0).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").attr("class","link-arrow").append("svg:path").attr("d","M0,-5L10,0L0,5")},_=function(e){var t=e.target.nodeWidth/2,n=e.target.x-e.source.x,r=e.target.y-e.source.y,o=Math.atan2(r,n),i=e.target.x-Math.cos(o)*t,a=e.target.y-Math.sin(o)*t;return[i,a]};this.exportToTosca=function(e){o.serviceToTosca(e)}}]}})}();var _slicedToArray=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(c){o=!0,i=c}finally{try{!r&&s["return"]&&s["return"]()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();!function(){angular.module("xos.serviceGrid").service("NetworkEncoder",["$q","Networks","NetworkTemplateEncoder",function(e,t,n){var r=this;this.buildTosca=function(t,r){var o=angular.copy(t),i={},a=e.defer();try{t=_.reduce(t,function(e,t){return e["network#"+t.name]={type:"tosca.nodes.network.Network.XOS",requirements:[]},angular.isDefined(t.slices)&&(_.forEach(t.slices,function(n){var r={owner:{node:n.name,relationship:"tosca.relationships.MemberOfSlice"}},o={connection:{node:n.name,relationship:"tosca.relationships.ConnectsToSlice"}};e["network#"+t.name].requirements.push(r,o)}),angular.isDefined(t.template)&&(i[t.name]=n.buildTosca(t.template,r))),e},{}),Object.keys(i).length>0?e.all(i).then(function(e){if(e){var n=!0,i=!1,s=void 0;try{for(var c,l=Object.keys(e)[Symbol.iterator]();!(n=(c=l.next()).done);n=!0){var u=c.value,d=_slicedToArray(e[u],2),p=d[0],v=d[1];t["network#"+u].requirements.push({network_template:{node:"network_template#"+v.name,relationship:"tosca.relationships.UsesNetworkTemplate"}}),angular.extend(r,p)}}catch(m){i=!0,s=m}finally{try{!n&&l["return"]&&l["return"]()}finally{if(i)throw s}}}angular.extend(r.topology_template.node_templates,t),a.resolve([r,o])})["catch"](function(e){throw new Error(e)}):(angular.extend(r.topology_template.node_templates,t),a.resolve([r,o]))}catch(s){a.reject(s)}return a.promise},this.getSliceNetworks=function(n,o){var i=e.defer();return t.query({owner:n.id}).$promise.then(function(e){e=_.filter(e,function(e){return n.networks.indexOf(e.id)!==-1}),e=e.map(function(e){var t=e.slices.indexOf(n.id);return e.slices[t]=n,e}),r.buildTosca(e,o).then(i.resolve)["catch"](i.reject)}),i.promise}}])}(),function(){angular.module("xos.serviceGrid").service("NetworkTemplateEncoder",["$q","Networkstemplates",function(e,t){this.buildTosca=function(n,r){var o=e.defer();return t.get({id:n}).$promise.then(function(e){var t={};t["network_template#"+e.name]={type:"tosca.nodes.NetworkTemplate"},angular.extend(r.topology_template.node_templates,t),o.resolve([r,e])})["catch"](function(e){o.reject(e)}),o.promise}}])}(),function(){angular.module("xos.serviceGrid").service("ImageEncoder",["$q","Images",function(e,t){this.buildTosca=function(n,r){var o=e.defer();return t.get({id:n}).$promise.then(function(e){var t={};t["image#"+e.name]={type:"tosca.nodes.Image"},angular.extend(r.topology_template.node_templates,t),o.resolve([r,e])})["catch"](o.reject),o.promise}}])}(),function(){angular.module("xos.serviceGrid").service("ArchiveManager",function(){var e=this;this.createArchive=function(){e.archive=new JSZip},this.addFile=function(t,n){e.archive.file(t,n)},this.download=function(t){console.log(e.archive),e.archive.generateAsync({type:"blob"}).then(function(e){saveAs(e,t+".zip")})["catch"](function(e){console.log(e)})}})}(),angular.module("xos.serviceGrid").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosSubscribers.js b/xos/core/xoslib/static/js/xosSubscribers.js
index 21fa10c..e0ebf7f 100644
--- a/xos/core/xoslib/static/js/xosSubscribers.js
+++ b/xos/core/xoslib/static/js/xosSubscribers.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.subscribers",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(s){s.state("user-list",{url:"/",template:"<subscribers-list></subscribers-list>"})}]).config(["$httpProvider",function(s){s.interceptors.push("NoHyperlinks")}]).directive("subscribersList",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/subscribers-list.tpl.html",controller:function(){this.smartTableConfig={resource:"Subscribers"},this.model={label:{name:"aaa"},empty:{}},this.config={exclude:["password","last_login"],formName:"sampleForm",actions:[{label:"Save",icon:"ok",cb:function(s){console.log(s)},"class":"success"}]}}}}),angular.module("xos.subscribers").run(["$templateCache",function(s){s.put("templates/subscribers-list.tpl.html",'<!-- <xos-form ng-model="vm.model" config="vm.config"></xos-form> -->\n<xos-smart-table config="vm.smartTableConfig"></xos-smart-table>')}]),angular.module("xos.subscribers").run(["$location",function(s){s.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosSynchronizerNotifier.js b/xos/core/xoslib/static/js/xosSynchronizerNotifier.js
index 6bf3ea8..af91efc 100644
--- a/xos/core/xoslib/static/js/xosSynchronizerNotifier.js
+++ b/xos/core/xoslib/static/js/xosSynchronizerNotifier.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.synchronizerNotifier",["ngResource","ngCookies","xos.helpers"]).service("Diag",["$rootScope","$http","$q","$interval",function(n,t,s,e){var a=this,i=!1;this.getDiags=function(){var n=s.defer();return t.get("/api/core/diags").then(function(t){n.resolve(t.data)})["catch"](function(t){n.reject(t)}),n.promise},this.sendEvents=function(t){t.forEach(function(t){var s=JSON.parse(t.backend_register);s.last_run=new Date(1e3*s.last_run),s.last_duration=1e3*s.last_duration,s.last_synchronizer_start=new Date(1e3*s.last_synchronizer_start),s.last_syncrecord_start=s.last_syncrecord_start?new Date(1e3*s.last_syncrecord_start):null,n.$broadcast("diag",{name:t.name,updated:t.updated,info:s,status:a.getSyncStatus(s)})})},this.start=function(){return i=!0,a.getDiags().then(function(n){a.sendEvents(n)}),i},this.stop=function(){return i=!1},this.getSyncStatus=function(n){var t=new Date,s=9e5;return!(t-n.last_synchronizer_start>s&&t-n.last_syncrecord_start>s&&t-n.last_run>s)},e(function(){i&&a.getDiags().then(function(n){a.sendEvents(n)})},3e5)}]).directive("syncStatus",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/sync-status.tpl.html",controller:["$log","$rootScope","Diag","xosNotification","XosUserPrefs",function(n,t,s,e,a){var i=this;s.start(),this.synchronizers={},this.showNoSync=!0,t.$on("diag",function(n,t){i.synchronizers[t.name]=t,t.status?a.setSynchronizerNotificationStatus(t.name,!1):(a.getSynchronizerNotificationStatus(t.name)||e.notify("CORD Synchronizer",{icon:"/static/cord-logo.png",body:"The "+t.name+" synchronizer has not performed actions in the last 15 minutes."}),a.setSynchronizerNotificationStatus(t.name,!0)),i.showNoSync=!1,0===Object.keys(i.synchronizers).length&&(i.showNoSync=!0)})}]}}),angular.element(document).ready(function(){angular.bootstrap("#xosSynchronizerNotifier",["xos.synchronizerNotifier"])}),angular.module("xos.synchronizerNotifier").run(["$templateCache",function(n){n.put("templates/sync-status.tpl.html",'<div class="sync-status-container">\n  <div class="btn btn-default" ng-click="vm.showNotificationPanel = !vm.showNotificationPanel">\n    <i class="glyphicon glyphicon-inbox"></i>\n  </div>\n  <div class="notification-panel panel panel-default" ng-show="vm.showNotificationPanel">\n    <ul class="list-group" ng-show="!vm.showNoSync">\n      <li class="list-group-item" ng-repeat="(syncName, syncStatus) in vm.synchronizers">\n        <span class="badge" ng-class="{success: syncStatus.status, warning: !syncStatus.status}">\n          <span ng-show="syncStatus.status"><i class="glyphicon glyphicon-ok"></i></span>\n          <span ng-hide="syncStatus.status"><i class="glyphicon glyphicon-time"></i></span>\n        </span>\n        <b>{{syncName}}</b>\n        <br/>\n        <small><i>{{syncStatus.info.last_run | date:\'mediumTime\'}}</i></small>\n      </li>\n    </ul>\n    <div class="alert alert-info" ng-show="vm.showNoSync">\n      No syncronizers are running.\n    </div>\n  </div>\n</div>\n')}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosTenant.js b/xos/core/xoslib/static/js/xosTenant.js
index eeb919f..604f0d1 100644
--- a/xos/core/xoslib/static/js/xosTenant.js
+++ b/xos/core/xoslib/static/js/xosTenant.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.tenant",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(e){e.state("site-list",{url:"/",template:"<site-list></site-list>"}).state("site",{url:"/site/:id",template:"<site-detail></site-detail>"}).state("createslice",{url:"/site/:site/slice/:id?",template:"<create-slice></create-slice>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).directive("siteList",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/users-list.tpl.html",controller:["Sites","SlicesPlus",function(e,t){var i=this;this.tableConfig={columns:[{label:"Site",prop:"name",link:function(e){return"#/site/"+e.id}},{label:"Allocated",prop:"instance_total"},{label:"Ready",prop:"instance_total_ready"}]},e.query().$promise.then(function(e){return i.sites=e,t.query().$promise}).then(function(e){i.slices=e,i.site_list=i.returnData(i.sites,i.slices)})["catch"](function(e){throw new Error(e)}),this.returnData=function(e,t){var i,s=0,l=[];for(i=0;i<e.length;i++){var n=0,a=0;for(s=0;s<t.length;s++)null!=e[i].id&&null!=t[s].site&&e[i].id===t[s].site&&(n+=t[s].instance_total,a+=t[s].instance_total_ready);var o={id:e[i].id,name:e[i].name,instance_total:n,instance_total_ready:a};l.push(o)}return l}}]}}),angular.module("xos.tenant").run(["$templateCache",function(e){e.put("templates/createslice.html",'<!--<xos-table config="cs.tableConfig" data="cs.sites"></xos-table>-->\n<h2>Slice Details</h2>\n<hr></hr>\n<xos-form ng-model="cs.model" config="cs.config" ></xos-form>\n\n<!--<pre>-->\n<!--&lt;!&ndash;{{cs.users | json}}&ndash;&gt;-->\n\n<!--{{cs.users.name | json}}-->\n\n<!--</pre>-->'),e.put("templates/slicelist.html",'<!--<span ng-bind="siteNameSe"></span>-->\n<!--<xos-field></xos-field>-->\n<a class="addlink btn btn-info" ui-sref="createslice({site: sl.siteId})"><i class="glyphicon glyphicon-plus-sign"></i> Create Slice</a>\n<xos-table config="sl.tableConfig" data="sl.sliceList"></xos-table>\n<!--<div ui-view="sliceDetails"></div>-->\n<!--<pre>{{sl.users[0].site}}</pre>-->\n'),e.put("templates/users-list.tpl.html",'<xos-table config="vm.tableConfig" data="vm.site_list"></xos-table>')}]),angular.module("xos.tenant").directive("siteDetail",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"sl",templateUrl:"templates/slicelist.html",controller:["SlicesPlus","$stateParams",function(e,t){var i=this;this.siteId=t.id,this.tableConfig={columns:[{label:"Slice List",prop:"name",link:function(e){return"#/site/"+e.site+"/slice/"+e.id}},{label:"Allocated",prop:"instance_total"},{label:"Ready",prop:"instance_total_ready"}]},e.query({site:t.id}).$promise.then(function(e){i.sliceList=e})["catch"](function(e){throw new Error(e)})}]}}),angular.module("xos.tenant").directive("createSlice",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"cs",templateUrl:"templates/createslice.html",controller:["Slices","SlicesPlus","Sites","Images","$stateParams","$http","$state","$q","XosUserPrefs","_",function(e,t,i,s,l,n,a,o,r,c){var d=this;this.config={exclude:["site","password","last_login","mount_data_sets","default_flavor","creator","exposed_ports","networks","omf_friendly","omf_friendly","no_sync","no_policy","lazy_blocked","write_protect","deleted","backend_status","backend_register","policed","enacted","updated","created","validators","humanReadableName"],formName:"SliceDetails",feedback:{show:!1,message:"Form submitted successfully !!!",type:"success"},actions:[{label:"Save",icon:"ok",cb:function(e,t){f(e,t).then(function(){a.go("site",{id:d.model.site})})},"class":"success"},{label:"Save and continue editing",icon:"ok",cb:function(e,t){f(e,t)},"class":"primary"},{label:"Save and add another",icon:"ok",cb:function(e,t){f(e,t).then(function(){a.go("createslice",{site:d.model.site,id:""})})},"class":"primary"}],fields:{site:{label:"Site",type:"select",validators:{required:!0},hint:"The Site this Slice belongs to",options:[]},name:{label:"Name",type:"string",hint:"The Name of the Slice",validators:{required:!0,custom:function(e){if(d.model.site){var t=c.find(d.config.fields.site.options,["id",d.model.site]);if(t&&e)return 0===e.toLowerCase().indexOf(t.label.toLowerCase())}return!1}}},serviceClass:{label:"ServiceClass",type:"select",validators:{required:!0},hint:"The Site this Slice belongs to",options:[{id:1,label:"Best effort"}]},enabled:{label:"Enabled",type:"boolean",hint:"Status for this Slice"},description:{label:"Description",type:"string",hint:"High level description of the slice and expected activities",validators:{required:!1,minlength:10}},service:{label:"Service",type:"select",validators:{required:!1},options:[{id:0,label:"--------"}]},slice_url:{label:"Slice url",type:"string",validators:{required:!1,minlength:10}},max_instances:{label:"Max Instances",type:"number",validators:{required:!1,min:0}},default_isolation:{label:"Default Isolation",type:"select",validators:{required:!1},options:[{id:"vm",label:"Virtual Machine"},{id:"container",label:"Container"},{id:"container_vm",label:"Container in VM"}]},default_image:{label:"Default image",type:"select",validators:{required:!1},options:[]},network:{label:"Network",type:"select",validators:{required:!1},options:[{id:"default",label:"Default"},{id:"host",label:"Host"},{id:"bridged",label:"Bridged"},{id:"noauto",label:"No Automatic Networks"}]}}};var u;s.query().$promise.then(function(e){d.users=e,u=d.users,d.optionValImg=d.setData(u,{field1:"id",field2:"name"}),d.config.fields.default_image.options=d.optionValImg})["catch"](function(e){throw new Error(e)}),this.setData=function(e,t){var i,s=[];for(i=0;i<e.length;i++){var l={id:e[i][t.field1],label:e[i][t.field2]};s.push(l)}return s},l.id?(delete this.config.fields.site,this.config.exclude.push("site"),e.get({id:l.id}).$promise.then(function(e){d.users=e,u=e,d.model=u})["catch"](function(e){throw new Error(e)})):(this.model={},r.getUserDetailsCookie().$promise.then(function(e){d.model.creator=e.current_user_id})["catch"](function(e){throw new Error(e)}),i.query().$promise.then(function(e){d.users_site=e,d.optionVal=d.setData(d.users_site,{field1:"id",field2:"name"}),d.config.fields.site.options=d.optionVal})["catch"](function(e){throw new Error(e)}));var f=function(t,i){var s=o.defer();if(delete t.networks,i.$valid){if(t.id)var l=e.update(t).$promise;else var l=e.save(t).$promise;l.then(function(e){d.model=e,d.config.feedback.show=!0,s.resolve(e)})["catch"](function(e){d.config.feedback.show=!0,d.config.feedback.type="danger",e.data&&e.data.detail?d.config.feedback.message=e.data.detail:d.config.feedback.message=e.statusText,s.reject(e)})}return s.promise}}]}}),angular.module("xos.tenant").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosTruckroll.js b/xos/core/xoslib/static/js/xosTruckroll.js
index 0ef13c3..438aaa3 100644
--- a/xos/core/xoslib/static/js/xosTruckroll.js
+++ b/xos/core/xoslib/static/js/xosTruckroll.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.truckroll",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(l){l.state("user-list",{url:"/",template:"<truckroll></truckroll>"})}]).config(["$httpProvider",function(l){l.interceptors.push("NoHyperlinks")}]).directive("truckroll",function(){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/truckroll.tpl.html",controller:["$timeout","$log","Subscribers","Truckroll",function(l,n,t,s){var r=this;t.query().$promise.then(function(l){r.subscribers=l}),this.loader=!1,this.runTest=function(){delete r.truckroll.id,delete r.truckroll.result,delete r.truckroll.is_synced,delete r.truckroll.result_code,delete r.truckroll.backend_status;var l=new s(r.truckroll);r.loader=!0,l.$save().then(function(l){r.waitForTest(l.id)})},this.waitForTest=function(n){s.get({id:n}).$promise.then(function(t){t.backend_status.indexOf("2")>=0||t.result_code&&t.result_code.indexOf("2")>=0||t.is_synced?(r.truckroll=angular.copy(t),r.loader=!1,s["delete"]({id:n})):l(function(){r.waitForTest(n)},2e3)})}}]}}),angular.module("xos.truckroll").run(["$templateCache",function(l){l.put("templates/truckroll.tpl.html",'<div class="row">\n  <div class="col-xs-12">\n    <h2>Virtual Truck Roll</h2>\n    <p>Use this page to run test against your subscriber</p>\n  </div>\n</div>\n<form ng-submit="vm.runTest()">\n  <div class="row">\n    <div class="col-xs-12">\n      <label>Target:</label>\n    </div>\n    <div class="col-xs-12">\n      <select class="form-control" ng-model="vm.truckroll.target_id" ng-options="s.id as s.humanReadableName for s in vm.subscribers"></select>\n    </div>\n  </div>\n  <div class="row">\n    <div class="col-xs-12">\n      <label>Scope:</label>\n    </div>\n    <div class="col-xs-6">\n      <a \n      ng-click="vm.truckroll.scope = \'container\'"\n      ng-class="{\'btn-default\': vm.truckroll.scope !== \'container\', \'btn-primary\': vm.truckroll.scope === \'container\'}"\n      class="btn btn-block"\n      >\n        Container\n      </a>\n    </div>\n    <div class="col-xs-6">\n      <a \n      ng-click="vm.truckroll.scope = \'vm\'"\n      ng-class="{\'btn-default\': vm.truckroll.scope !== \'vm\', \'btn-primary\': vm.truckroll.scope === \'vm\'}"\n      class="btn btn-block"\n      >\n        VM\n      </a>\n    </div>\n  </div>\n  <div class="row">\n    <div class="col-xs-12">\n      <label>Test:</label>\n    </div>\n    <div class="col-xs-4">\n      <a \n      ng-click="vm.truckroll.test = \'ping\'"\n      ng-class="{\'btn-default\': vm.truckroll.test !== \'ping\', \'btn-primary\': vm.truckroll.test === \'ping\'}"\n      class="btn btn-block">Ping</a>\n    </div>\n    <div class="col-xs-4">\n      <a \n      ng-click="vm.truckroll.test = \'traceroute\'"\n      ng-class="{\'btn-default\': vm.truckroll.test !== \'traceroute\', \'btn-primary\': vm.truckroll.test === \'traceroute\'}"\n      class="btn btn-block">Traceroute</a>\n    </div>\n    <div class="col-xs-4">\n      <a \n      ng-click="vm.truckroll.test = \'tcpdump\'"\n      ng-class="{\'btn-default\': vm.truckroll.test !== \'tcpdump\', \'btn-primary\': vm.truckroll.test === \'tcpdump\'}"\n      class="btn btn-block">Tcp Dump</a>\n    </div>\n  </div>\n  <div class="row">\n    <div class="col-xs-12">\n      <label>Argument:</label>\n    </div>\n    <div class="col-xs-12">\n      <input type="text" class="form-control" ng-model="vm.truckroll.argument" required />\n    </div>\n  </div>\n  <div class="row">\n    <div class="col-xs-12" ng-show="!vm.loader">\n      <button class="btn btn-success btn-block">Run test</button>\n    </div>\n  </div>\n</form>\n<div class="row">\n    <div class="col-xs-12 animate-vertical" ng-show="vm.loader">\n      <div class="loader"></div>\n    </div>\n  </div>\n  <div class="row" ng-hide="!vm.truckroll.result_code">\n    <div class="col-xs-12">\n      <label>Result Code</label>\n    </div>\n    <div class="col-xs-12">\n      <pre>{{vm.truckroll.result_code}}</pre>\n    </div>\n  </div>\n  <div class="row" ng-hide="!vm.truckroll.result">\n    <div class="col-xs-12">\n      <label>\n        Result:\n      </label>\n    </div>\n    <div class="col-xs-12">\n      <pre>{{vm.truckroll.result}}</pre>\n    </div>\n  </div>\n  <div class="row" ng-hide="!vm.truckroll.backend_status">\n    <div class="col-xs-12">\n      <label>Backend Status</label>\n    </div>\n    <div class="col-xs-12">\n      <pre>{{vm.truckroll.backend_status}}</pre>\n    </div>\n  </div>'),l.put("templates/users-list.tpl.html",'<xos-table config="vm.tableConfig" data="vm.users"></xos-table>')}]),angular.module("xos.truckroll").run(["$location",function(l){l.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosUITutorial.js b/xos/core/xoslib/static/js/xosUITutorial.js
index 79a5492..1bdd23c 100644
--- a/xos/core/xoslib/static/js/xosUITutorial.js
+++ b/xos/core/xoslib/static/js/xosUITutorial.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 "use strict";angular.module("xos.UITutorial",["ngResource","ngCookies","ui.router","xos.helpers"]).config(["$stateProvider",function(e){e.state("shell",{url:"/",template:"<js-shell></js-shell>"})}]).config(["$httpProvider",function(e){e.interceptors.push("NoHyperlinks")}]).directive("jsShell",["TemplateHandler",function(e){return{restrict:"E",scope:{},bindToController:!0,controllerAs:"vm",templateUrl:"templates/js-shell.tpl.html",controller:["ExploreCmd",function(r){var t=this,o=new Josh.History({key:"jsshell.history"});this.shell=Josh.Shell({history:o}),this.shell.onNewPrompt(function(e){e("[ngXosLib] $ ")}),this.shell.setCommandHandler("explore",{exec:function(o,s,n){r.setup(t.shell),n(e.instructions({title:"You can now explore the API use angular $resouces!",messages:["Use <code>resource list</code> to list all the available resources and <code>resource {resoureName} {method} {?paramters}</code> to call the API.","An example command is <code>resource Slices query</code>","You can also provide paramters with <code>resource Slices query {max_instances: 10}</code>"]}))}}),this.shell.activate()}]}}]),angular.module("xos.UITutorial").run(["$templateCache",function(e){e.put("templates/js-shell.tpl.html",'<div id="shell-panel">\n  <div>\n    Type <code>help</code> or hit <code>TAB</code> for a list of commands.\n  </div>\n  <div id="shell-view"></div>\n</div>')}]),function(){angular.module("xos.UITutorial").service("TemplateHandler",["_",function(e){this.error=e.template('<span class="error">[ERROR] <%= msg %></span>'),this.instructions=e.template("\n      <div>\n        <strong><%= title %></strong>\n        <% _.forEach(messages, function(m) { %><p><%= m %></p><% }); %>\n      </div>\n    "),this.resourcesResponse=e.template('\n      <div>\n        <p>Corresponding js code: <code><%= jsCode %></code></p>\n        <div class="json"><%= res %></div>\n      </div>\n    '),this.jsonObject=e.template('<div class="jsonObject"><%= JSON.stringify(obj) %><%=comma%></code></div>'),this.jsonCollection=e.template('<div class="jsonCollection">[<% _.forEach(collection, function(item) { %><%= item %><%}); %>]</div>')}])}(),function(){angular.module("xos.UITutorial").service("ResponseHandler",["TemplateHandler",function(e){var r=this,t=["deleted","enabled","enacted","exposed_ports","lazy_blocked","created","validators","controllers","backend_status","backend_register","policed","no_policy","write_protect","no_sync","updated"];this.parseObject=function(r){var o=arguments.length<=1||void 0===arguments[1]?"":arguments[1];return r=_.omit(r,t),e.jsonObject({obj:r,comma:o})},this.parseCollection=function(t){return t=t.map(function(e,o){return""+r.parseObject(e,o===t.length-1?"":",")}),e.jsonCollection({collection:t})},this.parse=function(t,o,s){t=_.isArray(t)?r.parseCollection(t):r.parseObject(t),s(e.resourcesResponse({jsCode:o,res:t}))}}])}(),function(){angular.module("xos.UITutorial").service("ExploreCmd",["$injector","ResponseHandler","ErrorHandler",function($injector,ResponseHandler,ErrorHandler){var _this=this;this.resourceExec=function(e,r,t){switch(r[0]){case"list":return _this.listAvailableResources(t);default:var o=r.shift(),s=r.shift();return _this.consumeResource(o,s,r,t)}},this.resourceCompletion=function(e,r,t,o){var s=["list"].concat(_this.getAvailableResources());if(t.text.match(/resource\s[A-Z][a-z]+\s/)){s.indexOf(r)!==-1&&(r="");var n=["query","get","save","$save","delete"];return o(_this.shell.bestMatch(r,n))}return o(_this.shell.bestMatch(r,s))},this.setup=function(e){_this.shell=e,e.setCommandHandler("resource",{exec:_this.resourceExec,completion:_this.resourceCompletion})},this.getAvailableResources=function(){return angular.module("xos.helpers")._invokeQueue.filter(function(e){if("service"!==e[1])return!1;var r=e[2][1];return r.indexOf("$resource")!==-1}).reduce(function(e,r){return e.concat([r[2][0]])},[])},this.listAvailableResources=function(e){var r=_this.getAvailableResources().reduce(function(e,r){return""+e+r+"<br/>"},"");e(r)},this.consumeResource=function(resourceName,method,args,done){if(_this.getAvailableResources().indexOf(resourceName)===-1)return ErrorHandler.print('Resource "'+resourceName+'" does not exists',done);if(["query","get","save","$save","delete"].indexOf(method)===-1)return ErrorHandler.print('Method "'+method+'" not allowed',done);var params={};if(["get","$save","delete"].indexOf(method)!==-1&&0===args.length)return ErrorHandler.print('Method "'+method+'" require parameters',done);if(args.length>0&&(params=eval("("+args[0]+")")),"query"===method&&angular.isDefined(params.id))return ErrorHandler.print('Is not possible to use "id" as filter in method "'+method+'", use "get" instead!',done);var Resource=void 0;try{Resource=$injector.get(resourceName),Resource[method](params).$promise.then(function(e){var r=resourceName+"."+method+"("+(Object.keys(params).length>0?JSON.stringify(params):"")+")";return ResponseHandler.parse(e,r,done)})["catch"](function(e){if(404===e.status)return ErrorHandler.print(resourceName+' with method "'+method+'" and parameters '+JSON.stringify(params)+" "+e.data.detail,done)})}catch(e){return console.error(e),ErrorHandler.print('Failed to inject resource "'+resourceName+'"',done)}}}])}(),function(){angular.module("xos.UITutorial").service("ErrorHandler",["TemplateHandler",function(e){this.print=function(r,t){t(e.error({msg:r}))}}])}(),angular.module("xos.UITutorial").run(["$location",function(e){e.path("/")}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/vendor/jquery-1.11.3.js b/xos/core/xoslib/static/vendor/jquery-1.11.3.js
index 6feb110..18cbf56 100644
--- a/xos/core/xoslib/static/vendor/jquery-1.11.3.js
+++ b/xos/core/xoslib/static/vendor/jquery-1.11.3.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 /*!
  * jQuery JavaScript Library v1.11.3
  * http://jquery.com/
diff --git a/xos/core/xoslib/static/vendor/xosCeilometerDashboardVendor.js b/xos/core/xoslib/static/vendor/xosCeilometerDashboardVendor.js
index 1d6c490..e2d4b18 100644
--- a/xos/core/xoslib/static/vendor/xosCeilometerDashboardVendor.js
+++ b/xos/core/xoslib/static/vendor/xosCeilometerDashboardVendor.js
@@ -1 +1,19 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(n,e,o){this.groups=[],this.closeOthers=function(i){var a=angular.isDefined(e.closeOthers)?n.$eval(e.closeOthers):o.closeOthers;a&&angular.forEach(this.groups,function(n){n!==i&&(n.isOpen=!1)})},this.addGroup=function(n){var e=this;this.groups.push(n),n.$on("$destroy",function(o){e.removeGroup(n)})},this.removeGroup=function(n){var e=this.groups.indexOf(n);e!==-1&&this.groups.splice(e,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(n,e){return e.templateUrl||"template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(n,e){return e.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(n){this.heading=n}},link:function(n,e,o,i){i.addGroup(n),n.openClass=o.openClass||"panel-open",n.panelClass=o.panelClass,n.$watch("isOpen",function(o){e.toggleClass(n.openClass,!!o),o&&i.closeOthers(n)}),n.toggleOpen=function(e){n.isDisabled||e&&32!==e.which||(n.isOpen=!n.isOpen)}}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(n,e,o,i,a){i.setHeading(a(n,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:["?^uibAccordionGroup","?^accordionGroup"],link:function(n,e,o,i){i=i[0]?i[0]:i[1],n.$watch(function(){return i[o.uibAccordionTransclude]},function(n){n&&(e.find("span").html(""),e.find("span").append(n))})}}}),angular.module("ui.bootstrap.accordion").value("$accordionSuppressWarning",!1).controller("AccordionController",["$scope","$attrs","$controller","$log","$accordionSuppressWarning",function(n,e,o,i,a){a||i.warn("AccordionController is now deprecated. Use UibAccordionController instead."),angular.extend(this,o("UibAccordionController",{$scope:n,$attrs:e}))}]).directive("accordion",["$log","$accordionSuppressWarning",function(n,e){return{restrict:"EA",controller:"AccordionController",controllerAs:"accordion",transclude:!0,replace:!1,templateUrl:function(n,e){return e.templateUrl||"template/accordion/accordion.html"},link:function(){e||n.warn("accordion is now deprecated. Use uib-accordion instead.")}}}]).directive("accordionGroup",["$log","$accordionSuppressWarning",function(n,e){return{require:"^accordion",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(n,e){return e.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(n){this.heading=n}},link:function(o,i,a,r){e||n.warn("accordion-group is now deprecated. Use uib-accordion-group instead."),r.addGroup(o),o.openClass=a.openClass||"panel-open",o.panelClass=a.panelClass,o.$watch("isOpen",function(n){i.toggleClass(o.openClass,!!n),n&&r.closeOthers(o)}),o.toggleOpen=function(n){o.isDisabled||n&&32!==n.which||(o.isOpen=!o.isOpen)}}}}]).directive("accordionHeading",["$log","$accordionSuppressWarning",function(n,e){return{restrict:"EA",transclude:!0,template:"",replace:!0,require:"^accordionGroup",link:function(o,i,a,r,t){e||n.warn("accordion-heading is now deprecated. Use uib-accordion-heading instead."),r.setHeading(t(o,angular.noop))}}}]).directive("accordionTransclude",["$log","$accordionSuppressWarning",function(n,e){return{require:"^accordionGroup",link:function(o,i,a,r){e||n.warn("accordion-transclude is now deprecated. Use uib-accordion-transclude instead."),o.$watch(function(){return r[a.accordionTransclude]},function(n){n&&(i.find("span").html(""),i.find("span").append(n))})}}}]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$injector",function(n,e){var o=e.has("$animateCss")?e.get("$animateCss"):null;return{link:function(e,i,a){function r(){i.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),o?o(i,{addClass:"in",easing:"ease",to:{height:i[0].scrollHeight+"px"}}).start()["finally"](t):n.addClass(i,"in",{to:{height:i[0].scrollHeight+"px"}}).then(t)}function t(){i.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function s(){return i.hasClass("collapse")||i.hasClass("in")?(i.css({height:i[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(o?o(i,{removeClass:"in",to:{height:"0"}}).start()["finally"](c):n.removeClass(i,"in",{to:{height:"0"}}).then(c))):c()}function c(){i.css({height:"0"}),i.removeClass("collapsing").addClass("collapse")}e.$watch(a.uibCollapse,function(n){n?s():r()})}}}]),angular.module("ui.bootstrap.collapse").value("$collapseSuppressWarning",!1).directive("collapse",["$animate","$injector","$log","$collapseSuppressWarning",function(n,e,o,i){var a=e.has("$animateCss")?e.get("$animateCss"):null;return{link:function(e,r,t){function s(){r.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),a?a(r,{easing:"ease",to:{height:r[0].scrollHeight+"px"}}).start().done(c):n.animate(r,{},{height:r[0].scrollHeight+"px"}).then(c)}function c(){r.removeClass("collapsing").addClass("collapse in").css({height:"auto"})}function l(){return r.hasClass("collapse")||r.hasClass("in")?(r.css({height:r[0].scrollHeight+"px"}).removeClass("collapse in").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(a?a(r,{to:{height:"0"}}).start().done(d):n.animate(r,{},{height:"0"}).then(d))):d()}function d(){r.css({height:"0"}),r.removeClass("collapsing").addClass("collapse")}i||o.warn("collapse is now deprecated. Use uib-collapse instead."),e.$watch(t.collapse,function(n){n?l():s()})}}}]);
\ No newline at end of file
diff --git a/xos/core/xoslib/static/vendor/xosDashboardManagerVendor.js b/xos/core/xoslib/static/vendor/xosDashboardManagerVendor.js
index 74657b5..8d934d7 100644
--- a/xos/core/xoslib/static/vendor/xosDashboardManagerVendor.js
+++ b/xos/core/xoslib/static/vendor/xosDashboardManagerVendor.js
@@ -1,2 +1,20 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 angular.module("dndLists",[]).directive("dndDraggable",["$parse","$timeout","dndDropEffectWorkaround","dndDragTypeWorkaround",function(e,t,n,r){return function(i,o,a){o.attr("draggable","true"),a.dndDisableIf&&i.$watch(a.dndDisableIf,function(e){o.attr("draggable",!e)}),o.on("dragstart",function(s){return s=s.originalEvent||s,"false"==o.attr("draggable")||(s.dataTransfer.setData("Text",angular.toJson(i.$eval(a.dndDraggable))),s.dataTransfer.effectAllowed=a.dndEffectAllowed||"move",o.addClass("dndDragging"),t(function(){o.addClass("dndDraggingSource")},0),n.dropEffect="none",r.isDragging=!0,r.dragType=a.dndType?i.$eval(a.dndType):void 0,s._dndHandle&&s.dataTransfer.setDragImage&&s.dataTransfer.setDragImage(o[0],0,0),e(a.dndDragstart)(i,{event:s}),void s.stopPropagation())}),o.on("dragend",function(s){s=s.originalEvent||s;var u=n.dropEffect;i.$apply(function(){switch(u){case"move":e(a.dndMoved)(i,{event:s});break;case"copy":e(a.dndCopied)(i,{event:s});break;case"none":e(a.dndCanceled)(i,{event:s})}e(a.dndDragend)(i,{event:s,dropEffect:u})}),o.removeClass("dndDragging"),t(function(){o.removeClass("dndDraggingSource")},0),r.isDragging=!1,s.stopPropagation()}),o.on("click",function(t){a.dndSelected&&(t=t.originalEvent||t,i.$apply(function(){e(a.dndSelected)(i,{event:t})}),t.stopPropagation())}),o.on("selectstart",function(){this.dragDrop&&this.dragDrop()})}}]).directive("dndList",["$parse","$timeout","dndDropEffectWorkaround","dndDragTypeWorkaround",function(e,t,n,r){return function(i,o,a){function s(e,t,n){var r=y?e.offsetX||e.layerX:e.offsetY||e.layerY,i=y?t.offsetWidth:t.offsetHeight,o=y?t.offsetLeft:t.offsetTop;return o=n?o:0,r<o+i/2}function u(){var e;return angular.forEach(o.children(),function(t){var n=angular.element(t);n.hasClass("dndPlaceholder")&&(e=n)}),e||angular.element("<li class='dndPlaceholder'></li>")}function c(){return Array.prototype.indexOf.call(m.children,g)}function l(e){if(!r.isDragging&&!v)return!1;if(!d(e.dataTransfer.types))return!1;if(a.dndAllowedTypes&&r.isDragging){var t=i.$eval(a.dndAllowedTypes);if(angular.isArray(t)&&t.indexOf(r.dragType)===-1)return!1}return!a.dndDisableIf||!i.$eval(a.dndDisableIf)}function p(){return h.remove(),o.removeClass("dndDragover"),!0}function f(t,n,o,a){return e(t)(i,{event:n,index:o,item:a||void 0,external:!r.isDragging,type:r.isDragging?r.dragType:void 0})}function d(e){if(!e)return!0;for(var t=0;t<e.length;t++)if("Text"===e[t]||"text/plain"===e[t])return!0;return!1}var h=u(),g=h[0],m=o[0];h.remove();var y=a.dndHorizontalList&&i.$eval(a.dndHorizontalList),v=a.dndExternalSources&&i.$eval(a.dndExternalSources);o.on("dragenter",function(e){return e=e.originalEvent||e,!l(e)||void e.preventDefault()}),o.on("dragover",function(e){if(e=e.originalEvent||e,!l(e))return!0;if(g.parentNode!=m&&o.append(h),e.target!==m){for(var t=e.target;t.parentNode!==m&&t.parentNode;)t=t.parentNode;t.parentNode===m&&t!==g&&(s(e,t)?m.insertBefore(g,t):m.insertBefore(g,t.nextSibling))}else if(s(e,g,!0))for(;g.previousElementSibling&&(s(e,g.previousElementSibling,!0)||0===g.previousElementSibling.offsetHeight);)m.insertBefore(g,g.previousElementSibling);else for(;g.nextElementSibling&&!s(e,g.nextElementSibling,!0);)m.insertBefore(g,g.nextElementSibling.nextElementSibling);return a.dndDragover&&!f(a.dndDragover,e,c())?p():(o.addClass("dndDragover"),e.preventDefault(),e.stopPropagation(),!1)}),o.on("drop",function(e){if(e=e.originalEvent||e,!l(e))return!0;e.preventDefault();var t,r=e.dataTransfer.getData("Text")||e.dataTransfer.getData("text/plain");try{t=JSON.parse(r)}catch(o){return p()}var s=c();return a.dndDrop&&(t=f(a.dndDrop,e,s,t),!t)?p():(t!==!0&&i.$apply(function(){i.$eval(a.dndList).splice(s,0,t)}),f(a.dndInserted,e,s,t),"none"===e.dataTransfer.dropEffect?"copy"===e.dataTransfer.effectAllowed||"move"===e.dataTransfer.effectAllowed?n.dropEffect=e.dataTransfer.effectAllowed:n.dropEffect=e.ctrlKey?"copy":"move":n.dropEffect=e.dataTransfer.dropEffect,p(),e.stopPropagation(),!1)}),o.on("dragleave",function(e){e=e.originalEvent||e,o.removeClass("dndDragover"),t(function(){o.hasClass("dndDragover")||h.remove()},100)})}}]).directive("dndNodrag",function(){return function(e,t,n){t.attr("draggable","true"),t.on("dragstart",function(e){e=e.originalEvent||e,e._dndHandle||(e.dataTransfer.types&&e.dataTransfer.types.length||e.preventDefault(),e.stopPropagation())}),t.on("dragend",function(e){e=e.originalEvent||e,e._dndHandle||e.stopPropagation()})}}).directive("dndHandle",function(){return function(e,t,n){t.attr("draggable","true"),t.on("dragstart dragend",function(e){e=e.originalEvent||e,e._dndHandle=!0})}}).factory("dndDragTypeWorkaround",function(){return{}}).factory("dndDropEffectWorkaround",function(){return{}}),function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.jsyaml=e()}}(function(){return function e(t,n,r){function i(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[a]={exports:{}};t[a][0].call(l.exports,function(e){var n=t[a][1][e];return i(n?n:e)},l,l.exports,e,t,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(e,t,n){"use strict";function r(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}var i=e("./js-yaml/loader"),o=e("./js-yaml/dumper");t.exports.Type=e("./js-yaml/type"),t.exports.Schema=e("./js-yaml/schema"),t.exports.FAILSAFE_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.JSON_SCHEMA=e("./js-yaml/schema/json"),t.exports.CORE_SCHEMA=e("./js-yaml/schema/core"),t.exports.DEFAULT_SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_FULL_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.load=i.load,t.exports.loadAll=i.loadAll,t.exports.safeLoad=i.safeLoad,t.exports.safeLoadAll=i.safeLoadAll,t.exports.dump=o.dump,t.exports.safeDump=o.safeDump,t.exports.YAMLException=e("./js-yaml/exception"),t.exports.MINIMAL_SCHEMA=e("./js-yaml/schema/failsafe"),t.exports.SAFE_SCHEMA=e("./js-yaml/schema/default_safe"),t.exports.DEFAULT_SCHEMA=e("./js-yaml/schema/default_full"),t.exports.scan=r("scan"),t.exports.parse=r("parse"),t.exports.compose=r("compose"),t.exports.addConstructor=r("addConstructor")},{"./js-yaml/dumper":3,"./js-yaml/exception":4,"./js-yaml/loader":5,"./js-yaml/schema":7,"./js-yaml/schema/core":8,"./js-yaml/schema/default_full":9,"./js-yaml/schema/default_safe":10,"./js-yaml/schema/failsafe":11,"./js-yaml/schema/json":12,"./js-yaml/type":13}],2:[function(e,t,n){"use strict";function r(e){return"undefined"==typeof e||null===e}function i(e){return"object"==typeof e&&null!==e}function o(e){return Array.isArray(e)?e:r(e)?[]:[e]}function a(e,t){var n,r,i,o;if(t)for(o=Object.keys(t),n=0,r=o.length;n<r;n+=1)i=o[n],e[i]=t[i];return e}function s(e,t){var n,r="";for(n=0;n<t;n+=1)r+=e;return r}function u(e){return 0===e&&Number.NEGATIVE_INFINITY===1/e}t.exports.isNothing=r,t.exports.isObject=i,t.exports.toArray=o,t.exports.repeat=s,t.exports.isNegativeZero=u,t.exports.extend=a},{}],3:[function(e,t,n){"use strict";function r(e,t){var n,r,i,o,a,s,u;if(null===t)return{};for(n={},r=Object.keys(t),i=0,o=r.length;i<o;i+=1)a=r[i],s=String(t[a]),"!!"===a.slice(0,2)&&(a="tag:yaml.org,2002:"+a.slice(2)),u=e.compiledTypeMap[a],u&&L.call(u.styleAliases,s)&&(s=u.styleAliases[s]),n[a]=s;return n}function i(e){var t,n,r;if(t=e.toString(16).toUpperCase(),e<=255)n="x",r=2;else if(e<=65535)n="u",r=4;else{if(!(e<=4294967295))throw new D("code point within a string may not be greater than 0xFFFFFFFF");n="U",r=8}return"\\"+n+O.repeat("0",r-t.length)+t}function o(e){this.schema=e.schema||F,this.indent=Math.max(1,e.indent||2),this.skipInvalid=e.skipInvalid||!1,this.flowLevel=O.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=r(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function a(e,t){for(var n,r=O.repeat(" ",t),i=0,o=-1,a="",s=e.length;i<s;)o=e.indexOf("\n",i),o===-1?(n=e.slice(i),i=s):(n=e.slice(i,o+1),i=o+1),n.length&&"\n"!==n&&(a+=r),a+=n;return a}function s(e,t){return"\n"+O.repeat(" ",e.indent*t)}function u(e,t){var n,r,i;for(n=0,r=e.implicitTypes.length;n<r;n+=1)if(i=e.implicitTypes[n],i.resolve(t))return!0;return!1}function c(e){return e===U||e===M}function l(e){return 32<=e&&e<=126||161<=e&&e<=55295&&8232!==e&&8233!==e||57344<=e&&e<=65533&&65279!==e||65536<=e&&e<=1114111}function p(e){return l(e)&&65279!==e&&e!==K&&e!==X&&e!==Q&&e!==te&&e!==re&&e!==V&&e!==P}function f(e){return l(e)&&65279!==e&&!c(e)&&e!==G&&e!==z&&e!==V&&e!==K&&e!==X&&e!==Q&&e!==te&&e!==re&&e!==P&&e!==W&&e!==R&&e!==Y&&e!==ne&&e!==Z&&e!==B&&e!==q&&e!==H&&e!==J&&e!==ee}function d(e,t,n,r,i){var o,a,s=!1,u=!1,d=r!==-1,h=-1,g=f(e.charCodeAt(0))&&!c(e.charCodeAt(e.length-1));if(t)for(o=0;o<e.length;o++){if(a=e.charCodeAt(o),!l(a))return le;g=g&&p(a)}else{for(o=0;o<e.length;o++){if(a=e.charCodeAt(o),a===$)s=!0,d&&(u=u||o-h-1>r&&" "!==e[h+1],h=o);else if(!l(a))return le;g=g&&p(a)}u=u||d&&o-h-1>r&&" "!==e[h+1]}return s||u?" "===e[0]&&n>9?le:u?ce:ue:g&&!i(e)?ae:se}function h(e,t,n,r){e.dump=function(){function i(t){return u(e,t)}if(0===t.length)return"''";if(!e.noCompatMode&&oe.indexOf(t)!==-1)return"'"+t+"'";var o=e.indent*Math.max(1,n),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),c=r||e.flowLevel>-1&&n>=e.flowLevel;switch(d(t,c,e.indent,s,i)){case ae:return t;case se:return"'"+t.replace(/'/g,"''")+"'";case ue:return"|"+g(t,e.indent)+m(a(t,o));case ce:return">"+g(t,e.indent)+m(a(y(t,s),o));case le:return'"'+x(t,s)+'"';default:throw new D("impossible error: invalid scalar style")}}()}function g(e,t){var n=" "===e[0]?String(t):"",r="\n"===e[e.length-1],i=r&&("\n"===e[e.length-2]||"\n"===e),o=i?"+":r?"":"-";return n+o+"\n"}function m(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function y(e,t){for(var n,r,i=/(\n+)([^\n]*)/g,o=function(){var n=e.indexOf("\n");return n=n!==-1?n:e.length,i.lastIndex=n,v(e.slice(0,n),t)}(),a="\n"===e[0]||" "===e[0];r=i.exec(e);){var s=r[1],u=r[2];n=" "===u[0],o+=s+(a||n||""===u?"":"\n")+v(u,t),a=n}return o}function v(e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,o=0,a=0,s=0,u="";n=i.exec(e);)s=n.index,s-o>t&&(r=a>o?a:s,u+="\n"+e.slice(o,r),o=r+1),a=s;return u+="\n",u+=e.length-o>t&&a>o?e.slice(o,a)+"\n"+e.slice(a+1):e.slice(o),u.slice(1)}function x(e){for(var t,n,r="",o=0;o<e.length;o++)t=e.charCodeAt(o),n=ie[t],r+=!n&&l(t)?e[o]:n||i(t);return r}function A(e,t,n){var r,i,o="",a=e.tag;for(r=0,i=n.length;r<i;r+=1)E(e,t,n[r],!1,!1)&&(0!==r&&(o+=", "),o+=e.dump);e.tag=a,e.dump="["+o+"]"}function b(e,t,n,r){var i,o,a="",u=e.tag;for(i=0,o=n.length;i<o;i+=1)E(e,t+1,n[i],!0,!0)&&(r&&0===i||(a+=s(e,t)),a+="- "+e.dump);e.tag=u,e.dump=a||"[]"}function w(e,t,n){var r,i,o,a,s,u="",c=e.tag,l=Object.keys(n);for(r=0,i=l.length;r<i;r+=1)s="",0!==r&&(s+=", "),o=l[r],a=n[o],E(e,t,o,!1,!1)&&(e.dump.length>1024&&(s+="? "),s+=e.dump+": ",E(e,t,a,!1,!1)&&(s+=e.dump,u+=s));e.tag=c,e.dump="{"+u+"}"}function C(e,t,n,r){var i,o,a,u,c,l,p="",f=e.tag,d=Object.keys(n);if(e.sortKeys===!0)d.sort();else if("function"==typeof e.sortKeys)d.sort(e.sortKeys);else if(e.sortKeys)throw new D("sortKeys must be a boolean or a function");for(i=0,o=d.length;i<o;i+=1)l="",r&&0===i||(l+=s(e,t)),a=d[i],u=n[a],E(e,t+1,a,!0,!0,!0)&&(c=null!==e.tag&&"?"!==e.tag||e.dump&&e.dump.length>1024,c&&(l+=e.dump&&$===e.dump.charCodeAt(0)?"?":"? "),l+=e.dump,c&&(l+=s(e,t)),E(e,t+1,u,!0,c)&&(l+=e.dump&&$===e.dump.charCodeAt(0)?":":": ",l+=e.dump,p+=l));e.tag=f,e.dump=p||"{}"}function k(e,t,n){var r,i,o,a,s,u;for(i=n?e.explicitTypes:e.implicitTypes,o=0,a=i.length;o<a;o+=1)if(s=i[o],(s.instanceOf||s.predicate)&&(!s.instanceOf||"object"==typeof t&&t instanceof s.instanceOf)&&(!s.predicate||s.predicate(t))){if(e.tag=n?s.tag:"?",s.represent){if(u=e.styleMap[s.tag]||s.defaultStyle,"[object Function]"===_.call(s.represent))r=s.represent(t,u);else{if(!L.call(s.represent,u))throw new D("!<"+s.tag+'> tag resolver accepts not "'+u+'" style');r=s.represent[u](t,u)}e.dump=r}return!0}return!1}function E(e,t,n,r,i,o){e.tag=null,e.dump=n,k(e,n,!1)||k(e,n,!0);var a=_.call(e.dump);r&&(r=e.flowLevel<0||e.flowLevel>t);var s,u,c="[object Object]"===a||"[object Array]"===a;if(c&&(s=e.duplicates.indexOf(n),u=s!==-1),(null!==e.tag&&"?"!==e.tag||u||2!==e.indent&&t>0)&&(i=!1),u&&e.usedDuplicates[s])e.dump="*ref_"+s;else{if(c&&u&&!e.usedDuplicates[s]&&(e.usedDuplicates[s]=!0),"[object Object]"===a)r&&0!==Object.keys(e.dump).length?(C(e,t,e.dump,i),u&&(e.dump="&ref_"+s+e.dump)):(w(e,t,e.dump),u&&(e.dump="&ref_"+s+" "+e.dump));else if("[object Array]"===a)r&&0!==e.dump.length?(b(e,t,e.dump,i),u&&(e.dump="&ref_"+s+e.dump)):(A(e,t,e.dump),u&&(e.dump="&ref_"+s+" "+e.dump));else{if("[object String]"!==a){if(e.skipInvalid)return!1;throw new D("unacceptable kind of an object to dump "+a)}"?"!==e.tag&&h(e,e.dump,t,o)}null!==e.tag&&"?"!==e.tag&&(e.dump="!<"+e.tag+"> "+e.dump)}return!0}function j(e,t){var n,r,i=[],o=[];for(S(e,i,o),n=0,r=o.length;n<r;n+=1)t.duplicates.push(i[o[n]]);t.usedDuplicates=new Array(r)}function S(e,t,n){var r,i,o;if(null!==e&&"object"==typeof e)if(i=t.indexOf(e),i!==-1)n.indexOf(i)===-1&&n.push(i);else if(t.push(e),Array.isArray(e))for(i=0,o=e.length;i<o;i+=1)S(e[i],t,n);else for(r=Object.keys(e),i=0,o=r.length;i<o;i+=1)S(e[r[i]],t,n)}function I(e,t){t=t||{};var n=new o(t);return n.noRefs||j(e,n),E(n,0,e,!0,!0)?n.dump+"\n":""}function T(e,t){return I(e,O.extend({schema:N},t))}var O=e("./common"),D=e("./exception"),F=e("./schema/default_full"),N=e("./schema/default_safe"),_=Object.prototype.toString,L=Object.prototype.hasOwnProperty,M=9,$=10,U=32,Y=33,q=34,P=35,H=37,W=38,B=39,R=42,K=44,G=45,V=58,Z=62,z=63,J=64,X=91,Q=93,ee=96,te=123,ne=124,re=125,ie={};ie[0]="\\0",ie[7]="\\a",ie[8]="\\b",ie[9]="\\t",ie[10]="\\n",ie[11]="\\v",ie[12]="\\f",ie[13]="\\r",ie[27]="\\e",ie[34]='\\"',ie[92]="\\\\",ie[133]="\\N",ie[160]="\\_",ie[8232]="\\L",ie[8233]="\\P";var oe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],ae=1,se=2,ue=3,ce=4,le=5;t.exports.dump=I,t.exports.safeDump=T},{"./common":2,"./exception":4,"./schema/default_full":9,"./schema/default_safe":10}],4:[function(e,t,n){"use strict";function r(e,t){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||"",this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():"")}r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t},t.exports=r},{}],5:[function(e,t,n){"use strict";function r(e){return 10===e||13===e}function i(e){return 9===e||32===e}function o(e){return 9===e||32===e||10===e||13===e}function a(e){return 44===e||91===e||93===e||123===e||125===e}function s(e){var t;return 48<=e&&e<=57?e-48:(t=32|e,97<=t&&t<=102?t-97+10:-1)}function u(e){return 120===e?2:117===e?4:85===e?8:0}function c(e){return 48<=e&&e<=57?e-48:-1}function l(e){return 48===e?"\0":97===e?"":98===e?"\b":116===e?"\t":9===e?"\t":110===e?"\n":118===e?"\x0B":102===e?"\f":114===e?"\r":101===e?"":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"Â…":95===e?" ":76===e?"\u2028":80===e?"\u2029":""}function p(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function f(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||B,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function d(e,t){return new P(t,new H(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function h(e,t){throw d(e,t)}function g(e,t){e.onWarning&&e.onWarning.call(null,d(e,t))}function m(e,t,n,r){var i,o,a,s;if(t<n){if(s=e.input.slice(t,n),r)for(i=0,o=s.length;i<o;i+=1)a=s.charCodeAt(i),9===a||32<=a&&a<=1114111||h(e,"expected valid JSON character");else Q.test(s)&&h(e,"the stream contains non-printable characters");e.result+=s}}function y(e,t,n,r){var i,o,a,s;for(q.isObject(n)||h(e,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(n),a=0,s=i.length;a<s;a+=1)o=i[a],R.call(t,o)||(t[o]=n[o],r[o]=!0)}function v(e,t,n,r,i,o){var a,s;if(i=String(i),null===t&&(t={}),"tag:yaml.org,2002:merge"===r)if(Array.isArray(o))for(a=0,s=o.length;a<s;a+=1)y(e,t,o[a],n);else y(e,t,o,n);else e.json||R.call(n,i)||!R.call(t,i)||h(e,"duplicated mapping key"),t[i]=o,delete n[i];return t}function x(e){var t;t=e.input.charCodeAt(e.position),10===t?e.position++:13===t?(e.position++,10===e.input.charCodeAt(e.position)&&e.position++):h(e,"a line break is expected"),e.line+=1,e.lineStart=e.position}function A(e,t,n){for(var o=0,a=e.input.charCodeAt(e.position);0!==a;){for(;i(a);)a=e.input.charCodeAt(++e.position);if(t&&35===a)do a=e.input.charCodeAt(++e.position);while(10!==a&&13!==a&&0!==a);if(!r(a))break;for(x(e),a=e.input.charCodeAt(e.position),o++,e.lineIndent=0;32===a;)e.lineIndent++,a=e.input.charCodeAt(++e.position)}return n!==-1&&0!==o&&e.lineIndent<n&&g(e,"deficient indentation"),o}function b(e){var t,n=e.position;return t=e.input.charCodeAt(n),!(45!==t&&46!==t||t!==e.input.charCodeAt(n+1)||t!==e.input.charCodeAt(n+2)||(n+=3,t=e.input.charCodeAt(n),0!==t&&!o(t)))}function w(e,t){1===t?e.result+=" ":t>1&&(e.result+=q.repeat("\n",t-1))}function C(e,t,n){var s,u,c,l,p,f,d,h,g,y=e.kind,v=e.result;if(g=e.input.charCodeAt(e.position),o(g)||a(g)||35===g||38===g||42===g||33===g||124===g||62===g||39===g||34===g||37===g||64===g||96===g)return!1;if((63===g||45===g)&&(u=e.input.charCodeAt(e.position+1),o(u)||n&&a(u)))return!1;for(e.kind="scalar",e.result="",c=l=e.position,p=!1;0!==g;){if(58===g){if(u=e.input.charCodeAt(e.position+1),o(u)||n&&a(u))break}else if(35===g){if(s=e.input.charCodeAt(e.position-1),o(s))break}else{if(e.position===e.lineStart&&b(e)||n&&a(g))break;if(r(g)){if(f=e.line,d=e.lineStart,h=e.lineIndent,A(e,!1,-1),e.lineIndent>=t){p=!0,g=e.input.charCodeAt(e.position);continue}e.position=l,e.line=f,e.lineStart=d,e.lineIndent=h;break}}p&&(m(e,c,l,!1),w(e,e.line-f),c=l=e.position,p=!1),i(g)||(l=e.position+1),g=e.input.charCodeAt(++e.position)}return m(e,c,l,!1),!!e.result||(e.kind=y,e.result=v,!1)}function k(e,t){var n,i,o;if(n=e.input.charCodeAt(e.position),39!==n)return!1;for(e.kind="scalar",e.result="",e.position++,i=o=e.position;0!==(n=e.input.charCodeAt(e.position));)if(39===n){if(m(e,i,e.position,!0),n=e.input.charCodeAt(++e.position),39!==n)return!0;i=o=e.position,e.position++}else r(n)?(m(e,i,o,!0),w(e,A(e,!1,t)),i=o=e.position):e.position===e.lineStart&&b(e)?h(e,"unexpected end of the document within a single quoted scalar"):(e.position++,o=e.position);h(e,"unexpected end of the stream within a single quoted scalar")}function E(e,t){var n,i,o,a,c,l;if(l=e.input.charCodeAt(e.position),34!==l)return!1;for(e.kind="scalar",e.result="",e.position++,n=i=e.position;0!==(l=e.input.charCodeAt(e.position));){if(34===l)return m(e,n,e.position,!0),e.position++,!0;if(92===l){if(m(e,n,e.position,!0),l=e.input.charCodeAt(++e.position),r(l))A(e,!1,t);else if(l<256&&ie[l])e.result+=oe[l],e.position++;else if((c=u(l))>0){for(o=c,a=0;o>0;o--)l=e.input.charCodeAt(++e.position),(c=s(l))>=0?a=(a<<4)+c:h(e,"expected hexadecimal character");e.result+=p(a),e.position++}else h(e,"unknown escape sequence");n=i=e.position}else r(l)?(m(e,n,i,!0),w(e,A(e,!1,t)),n=i=e.position):e.position===e.lineStart&&b(e)?h(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}h(e,"unexpected end of the stream within a double quoted scalar")}function j(e,t){var n,r,i,a,s,u,c,l,p,f,d,g=!0,m=e.tag,y=e.anchor,x={};if(d=e.input.charCodeAt(e.position),91===d)a=93,c=!1,r=[];else{if(123!==d)return!1;a=125,c=!0,r={}}for(null!==e.anchor&&(e.anchorMap[e.anchor]=r),d=e.input.charCodeAt(++e.position);0!==d;){if(A(e,!0,t),d=e.input.charCodeAt(e.position),d===a)return e.position++,e.tag=m,e.anchor=y,e.kind=c?"mapping":"sequence",e.result=r,!0;g||h(e,"missed comma between flow collection entries"),p=l=f=null,s=u=!1,63===d&&(i=e.input.charCodeAt(e.position+1),o(i)&&(s=u=!0,e.position++,A(e,!0,t))),n=e.line,N(e,t,K,!1,!0),p=e.tag,l=e.result,A(e,!0,t),d=e.input.charCodeAt(e.position),!u&&e.line!==n||58!==d||(s=!0,d=e.input.charCodeAt(++e.position),A(e,!0,t),N(e,t,K,!1,!0),f=e.result),c?v(e,r,x,p,l,f):s?r.push(v(e,null,x,p,l,f)):r.push(l),A(e,!0,t),d=e.input.charCodeAt(e.position),44===d?(g=!0,d=e.input.charCodeAt(++e.position)):g=!1}h(e,"unexpected end of the stream within a flow collection")}function S(e,t){var n,o,a,s,u=z,l=!1,p=!1,f=t,d=0,g=!1;if(s=e.input.charCodeAt(e.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(e.kind="scalar",e.result="";0!==s;)if(s=e.input.charCodeAt(++e.position),43===s||45===s)z===u?u=43===s?X:J:h(e,"repeat of a chomping mode identifier");else{if(!((a=c(s))>=0))break;0===a?h(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):p?h(e,"repeat of an indentation width identifier"):(f=t+a-1,p=!0)}if(i(s)){do s=e.input.charCodeAt(++e.position);while(i(s));if(35===s)do s=e.input.charCodeAt(++e.position);while(!r(s)&&0!==s)}for(;0!==s;){for(x(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!p||e.lineIndent<f)&&32===s;)e.lineIndent++,s=e.input.charCodeAt(++e.position);if(!p&&e.lineIndent>f&&(f=e.lineIndent),r(s))d++;else{if(e.lineIndent<f){u===X?e.result+=q.repeat("\n",l?1+d:d):u===z&&l&&(e.result+="\n");break}for(o?i(s)?(g=!0,e.result+=q.repeat("\n",l?1+d:d)):g?(g=!1,e.result+=q.repeat("\n",d+1)):0===d?l&&(e.result+=" "):e.result+=q.repeat("\n",d):e.result+=q.repeat("\n",l?1+d:d),l=!0,p=!0,d=0,n=e.position;!r(s)&&0!==s;)s=e.input.charCodeAt(++e.position);m(e,n,e.position,!1)}}return!0}function I(e,t){var n,r,i,a=e.tag,s=e.anchor,u=[],c=!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=u),i=e.input.charCodeAt(e.position);0!==i&&45===i&&(r=e.input.charCodeAt(e.position+1),o(r));)if(c=!0,e.position++,A(e,!0,-1)&&e.lineIndent<=t)u.push(null),i=e.input.charCodeAt(e.position);else if(n=e.line,N(e,t,V,!1,!0),u.push(e.result),A(e,!0,-1),i=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==i)h(e,"bad indentation of a sequence entry");else if(e.lineIndent<t)break;return!!c&&(e.tag=a,e.anchor=s,e.kind="sequence",e.result=u,!0)}function T(e,t,n){var r,a,s,u,c=e.tag,l=e.anchor,p={},f={},d=null,g=null,m=null,y=!1,x=!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=p),u=e.input.charCodeAt(e.position);0!==u;){if(r=e.input.charCodeAt(e.position+1),s=e.line,63!==u&&58!==u||!o(r)){if(!N(e,n,G,!1,!0))break;if(e.line===s){for(u=e.input.charCodeAt(e.position);i(u);)u=e.input.charCodeAt(++e.position);if(58===u)u=e.input.charCodeAt(++e.position),o(u)||h(e,"a whitespace character is expected after the key-value separator within a block mapping"),y&&(v(e,p,f,d,g,null),d=g=m=null),x=!0,y=!1,a=!1,d=e.tag,g=e.result;else{if(!x)return e.tag=c,e.anchor=l,!0;h(e,"can not read an implicit mapping pair; a colon is missed")}}else{if(!x)return e.tag=c,e.anchor=l,!0;h(e,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===u?(y&&(v(e,p,f,d,g,null),d=g=m=null),x=!0,y=!0,a=!0):y?(y=!1,a=!0):h(e,"incomplete explicit mapping pair; a key node is missed"),e.position+=1,u=r;if((e.line===s||e.lineIndent>t)&&(N(e,t,Z,!0,a)&&(y?g=e.result:m=e.result),y||(v(e,p,f,d,g,m),d=g=m=null),A(e,!0,-1),u=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==u)h(e,"bad indentation of a mapping entry");else if(e.lineIndent<t)break}return y&&v(e,p,f,d,g,null),x&&(e.tag=c,e.anchor=l,e.kind="mapping",e.result=p),x}function O(e){var t,n,r,i,a=!1,s=!1;if(i=e.input.charCodeAt(e.position),33!==i)return!1;if(null!==e.tag&&h(e,"duplication of a tag property"),i=e.input.charCodeAt(++e.position),60===i?(a=!0,i=e.input.charCodeAt(++e.position)):33===i?(s=!0,n="!!",i=e.input.charCodeAt(++e.position)):n="!",t=e.position,a){do i=e.input.charCodeAt(++e.position);while(0!==i&&62!==i);e.position<e.length?(r=e.input.slice(t,e.position),i=e.input.charCodeAt(++e.position)):h(e,"unexpected end of the stream within a verbatim tag")}else{for(;0!==i&&!o(i);)33===i&&(s?h(e,"tag suffix cannot contain exclamation marks"):(n=e.input.slice(t-1,e.position+1),ne.test(n)||h(e,"named tag handle cannot contain such characters"),s=!0,t=e.position+1)),i=e.input.charCodeAt(++e.position);r=e.input.slice(t,e.position),te.test(r)&&h(e,"tag suffix cannot contain flow indicator characters")}return r&&!re.test(r)&&h(e,"tag name cannot contain such characters: "+r),a?e.tag=r:R.call(e.tagMap,n)?e.tag=e.tagMap[n]+r:"!"===n?e.tag="!"+r:"!!"===n?e.tag="tag:yaml.org,2002:"+r:h(e,'undeclared tag handle "'+n+'"'),!0}function D(e){var t,n;if(n=e.input.charCodeAt(e.position),38!==n)return!1;for(null!==e.anchor&&h(e,"duplication of an anchor property"),n=e.input.charCodeAt(++e.position),t=e.position;0!==n&&!o(n)&&!a(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&h(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(t,e.position),!0}function F(e){var t,n,r;if(r=e.input.charCodeAt(e.position),42!==r)return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!o(r)&&!a(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&h(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(n)||h(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],A(e,!0,-1),!0}function N(e,t,n,r,i){var o,a,s,u,c,l,p,f,d=1,g=!1,m=!1;if(null!==e.listener&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,o=a=s=Z===n||V===n,r&&A(e,!0,-1)&&(g=!0,e.lineIndent>t?d=1:e.lineIndent===t?d=0:e.lineIndent<t&&(d=-1)),1===d)for(;O(e)||D(e);)A(e,!0,-1)?(g=!0,s=o,e.lineIndent>t?d=1:e.lineIndent===t?d=0:e.lineIndent<t&&(d=-1)):s=!1;if(s&&(s=g||i),1!==d&&Z!==n||(p=K===n||G===n?t:t+1,f=e.position-e.lineStart,1===d?s&&(I(e,f)||T(e,f,p))||j(e,p)?m=!0:(a&&S(e,p)||k(e,p)||E(e,p)?m=!0:F(e)?(m=!0,null===e.tag&&null===e.anchor||h(e,"alias node should not have any properties")):C(e,p,K===n)&&(m=!0,null===e.tag&&(e.tag="?")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===d&&(m=s&&I(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(u=0,c=e.implicitTypes.length;u<c;u+=1)if(l=e.implicitTypes[u],l.resolve(e.result)){e.result=l.construct(e.result),e.tag=l.tag,null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);break}}else R.call(e.typeMap,e.tag)?(l=e.typeMap[e.tag],null!==e.result&&l.kind!==e.kind&&h(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+l.kind+'", not "'+e.kind+'"'),l.resolve(e.result)?(e.result=l.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):h(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):h(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function _(e){var t,n,a,s,u=e.position,c=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(s=e.input.charCodeAt(e.position))&&(A(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==s));){for(c=!0,s=e.input.charCodeAt(++e.position),t=e.position;0!==s&&!o(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(t,e.position),a=[],n.length<1&&h(e,"directive name must not be less than one character in length");0!==s;){for(;i(s);)s=e.input.charCodeAt(++e.position);if(35===s){do s=e.input.charCodeAt(++e.position);while(0!==s&&!r(s));break}if(r(s))break;for(t=e.position;0!==s&&!o(s);)s=e.input.charCodeAt(++e.position);a.push(e.input.slice(t,e.position))}0!==s&&x(e),R.call(se,n)?se[n](e,n,a):g(e,'unknown document directive "'+n+'"')}return A(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,A(e,!0,-1)):c&&h(e,"directives end mark is expected"),N(e,e.lineIndent-1,Z,!1,!0),A(e,!0,-1),e.checkLineBreaks&&ee.test(e.input.slice(u,e.position))&&g(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&b(e)?void(46===e.input.charCodeAt(e.position)&&(e.position+=3,A(e,!0,-1))):void(e.position<e.length-1&&h(e,"end of the stream or a document separator is expected"))}function L(e,t){e=String(e),t=t||{},0!==e.length&&(10!==e.charCodeAt(e.length-1)&&13!==e.charCodeAt(e.length-1)&&(e+="\n"),65279===e.charCodeAt(0)&&(e=e.slice(1)));var n=new f(e,t);for(n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)_(n);return n.documents}function M(e,t,n){var r,i,o=L(e,n);for(r=0,i=o.length;r<i;r+=1)t(o[r])}function $(e,t){var n=L(e,t);if(0!==n.length){if(1===n.length)return n[0];throw new P("expected a single document in the stream, but found more")}}function U(e,t,n){M(e,t,q.extend({schema:W},n))}function Y(e,t){return $(e,q.extend({schema:W},t))}for(var q=e("./common"),P=e("./exception"),H=e("./mark"),W=e("./schema/default_safe"),B=e("./schema/default_full"),R=Object.prototype.hasOwnProperty,K=1,G=2,V=3,Z=4,z=1,J=2,X=3,Q=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,ee=/[\x85\u2028\u2029]/,te=/[,\[\]\{\}]/,ne=/^(?:!|!!|![a-z\-]+!)$/i,re=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,ie=new Array(256),oe=new Array(256),ae=0;ae<256;ae++)ie[ae]=l(ae)?1:0,oe[ae]=l(ae);var se={YAML:function(e,t,n){var r,i,o;null!==e.version&&h(e,"duplication of %YAML directive"),1!==n.length&&h(e,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),null===r&&h(e,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),o=parseInt(r[2],10),1!==i&&h(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&g(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,i;2!==n.length&&h(e,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],ne.test(r)||h(e,"ill-formed tag handle (first argument) of the TAG directive"),R.call(e.tagMap,r)&&h(e,'there is a previously declared suffix for "'+r+'" tag handle'),re.test(i)||h(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[r]=i}};t.exports.loadAll=M,t.exports.load=$,t.exports.safeLoadAll=U,t.exports.safeLoad=Y},{"./common":2,"./exception":4,"./mark":6,"./schema/default_full":9,"./schema/default_safe":10}],6:[function(e,t,n){"use strict";function r(e,t,n,r,i){this.name=e,this.buffer=t,this.position=n,this.line=r,this.column=i}var i=e("./common");r.prototype.getSnippet=function(e,t){var n,r,o,a,s;if(!this.buffer)return null;for(e=e||4,t=t||75,n="",r=this.position;r>0&&"\0\r\nÂ…\u2028\u2029".indexOf(this.buffer.charAt(r-1))===-1;)if(r-=1,this.position-r>t/2-1){n=" ... ",r+=5;break}for(o="",a=this.position;a<this.buffer.length&&"\0\r\nÂ…\u2028\u2029".indexOf(this.buffer.charAt(a))===-1;)if(a+=1,a-this.position>t/2-1){o=" ... ",a-=5;break}return s=this.buffer.slice(r,a),i.repeat(" ",e)+n+s+o+"\n"+i.repeat(" ",e+this.position-r+n.length)+"^"},r.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),
 t&&(n+=":\n"+t)),n},t.exports=r},{"./common":2}],7:[function(e,t,n){"use strict";function r(e,t,n){var i=[];return e.include.forEach(function(e){n=r(e,t,n)}),e[t].forEach(function(e){n.forEach(function(t,n){t.tag===e.tag&&i.push(n)}),n.push(e)}),n.filter(function(e,t){return i.indexOf(t)===-1})}function i(){function e(e){r[e.tag]=e}var t,n,r={};for(t=0,n=arguments.length;t<n;t+=1)arguments[t].forEach(e);return r}function o(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new s("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=r(this,"implicit",[]),this.compiledExplicit=r(this,"explicit",[]),this.compiledTypeMap=i(this.compiledImplicit,this.compiledExplicit)}var a=e("./common"),s=e("./exception"),u=e("./type");o.DEFAULT=null,o.create=function(){var e,t;switch(arguments.length){case 1:e=o.DEFAULT,t=arguments[0];break;case 2:e=arguments[0],t=arguments[1];break;default:throw new s("Wrong number of arguments for Schema.create function")}if(e=a.toArray(e),t=a.toArray(t),!e.every(function(e){return e instanceof o}))throw new s("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!t.every(function(e){return e instanceof u}))throw new s("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new o({include:e,explicit:t})},t.exports=o},{"./common":2,"./exception":4,"./type":13}],8:[function(e,t,n){"use strict";var r=e("../schema");t.exports=new r({include:[e("./json")]})},{"../schema":7,"./json":12}],9:[function(e,t,n){"use strict";var r=e("../schema");t.exports=r.DEFAULT=new r({include:[e("./default_safe")],explicit:[e("../type/js/undefined"),e("../type/js/regexp"),e("../type/js/function")]})},{"../schema":7,"../type/js/function":18,"../type/js/regexp":19,"../type/js/undefined":20,"./default_safe":10}],10:[function(e,t,n){"use strict";var r=e("../schema");t.exports=new r({include:[e("./core")],implicit:[e("../type/timestamp"),e("../type/merge")],explicit:[e("../type/binary"),e("../type/omap"),e("../type/pairs"),e("../type/set")]})},{"../schema":7,"../type/binary":14,"../type/merge":22,"../type/omap":24,"../type/pairs":25,"../type/set":27,"../type/timestamp":29,"./core":8}],11:[function(e,t,n){"use strict";var r=e("../schema");t.exports=new r({explicit:[e("../type/str"),e("../type/seq"),e("../type/map")]})},{"../schema":7,"../type/map":21,"../type/seq":26,"../type/str":28}],12:[function(e,t,n){"use strict";var r=e("../schema");t.exports=new r({include:[e("./failsafe")],implicit:[e("../type/null"),e("../type/bool"),e("../type/int"),e("../type/float")]})},{"../schema":7,"../type/bool":15,"../type/float":16,"../type/int":17,"../type/null":23,"./failsafe":11}],13:[function(e,t,n){"use strict";function r(e){var t={};return null!==e&&Object.keys(e).forEach(function(n){e[n].forEach(function(e){t[String(e)]=n})}),t}function i(e,t){if(t=t||{},Object.keys(t).forEach(function(t){if(a.indexOf(t)===-1)throw new o('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=r(t.styleAliases||null),s.indexOf(this.kind)===-1)throw new o('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var o=e("./exception"),a=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],s=["scalar","sequence","mapping"];t.exports=i},{"./exception":4}],14:[function(e,t,n){"use strict";function r(e){if(null===e)return!1;var t,n,r=0,i=e.length,o=p;for(n=0;n<i;n++)if(t=o.indexOf(e.charAt(n)),!(t>64)){if(t<0)return!1;r+=6}return r%8===0}function i(e){var t,n,r=e.replace(/[\r\n=]/g,""),i=r.length,o=p,a=0,u=[];for(t=0;t<i;t++)t%4===0&&t&&(u.push(a>>16&255),u.push(a>>8&255),u.push(255&a)),a=a<<6|o.indexOf(r.charAt(t));return n=i%4*6,0===n?(u.push(a>>16&255),u.push(a>>8&255),u.push(255&a)):18===n?(u.push(a>>10&255),u.push(a>>2&255)):12===n&&u.push(a>>4&255),s?new s(u):u}function o(e){var t,n,r="",i=0,o=e.length,a=p;for(t=0;t<o;t++)t%3===0&&t&&(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]),i=(i<<8)+e[t];return n=o%3,0===n?(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]):2===n?(r+=a[i>>10&63],r+=a[i>>4&63],r+=a[i<<2&63],r+=a[64]):1===n&&(r+=a[i>>2&63],r+=a[i<<4&63],r+=a[64],r+=a[64]),r}function a(e){return s&&s.isBuffer(e)}var s;try{var u=e;s=u("buffer").Buffer}catch(c){}var l=e("../type"),p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";t.exports=new l("tag:yaml.org,2002:binary",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../type":13}],15:[function(e,t,n){"use strict";function r(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)}function i(e){return"true"===e||"True"===e||"TRUE"===e}function o(e){return"[object Boolean]"===Object.prototype.toString.call(e)}var a=e("../type");t.exports=new a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:r,construct:i,predicate:o,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(e,t,n){"use strict";function r(e){return null!==e&&!!c.test(e)}function i(e){var t,n,r,i;return t=e.replace(/_/g,"").toLowerCase(),n="-"===t[0]?-1:1,i=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:t.indexOf(":")>=0?(t.split(":").forEach(function(e){i.unshift(parseFloat(e,10))}),t=0,r=1,i.forEach(function(e){t+=e*r,r*=60}),n*t):n*parseFloat(t,10)}function o(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(s.isNegativeZero(e))return"-0.0";return n=e.toString(10),l.test(n)?n.replace("e",".e"):n}function a(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!==0||s.isNegativeZero(e))}var s=e("../common"),u=e("../type"),c=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),l=/^[-+]?[0-9]+e/;t.exports=new u("tag:yaml.org,2002:float",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o,defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(e,t,n){"use strict";function r(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function i(e){return 48<=e&&e<=55}function o(e){return 48<=e&&e<=57}function a(e){if(null===e)return!1;var t,n=e.length,a=0,s=!1;if(!n)return!1;if(t=e[a],"-"!==t&&"+"!==t||(t=e[++a]),"0"===t){if(a+1===n)return!0;if(t=e[++a],"b"===t){for(a++;a<n;a++)if(t=e[a],"_"!==t){if("0"!==t&&"1"!==t)return!1;s=!0}return s}if("x"===t){for(a++;a<n;a++)if(t=e[a],"_"!==t){if(!r(e.charCodeAt(a)))return!1;s=!0}return s}for(;a<n;a++)if(t=e[a],"_"!==t){if(!i(e.charCodeAt(a)))return!1;s=!0}return s}for(;a<n;a++)if(t=e[a],"_"!==t){if(":"===t)break;if(!o(e.charCodeAt(a)))return!1;s=!0}return!!s&&(":"!==t||/^(:[0-5]?[0-9])+$/.test(e.slice(a)))}function s(e){var t,n,r=e,i=1,o=[];return r.indexOf("_")!==-1&&(r=r.replace(/_/g,"")),t=r[0],"-"!==t&&"+"!==t||("-"===t&&(i=-1),r=r.slice(1),t=r[0]),"0"===r?0:"0"===t?"b"===r[1]?i*parseInt(r.slice(2),2):"x"===r[1]?i*parseInt(r,16):i*parseInt(r,8):r.indexOf(":")!==-1?(r.split(":").forEach(function(e){o.unshift(parseInt(e,10))}),r=0,n=1,o.forEach(function(e){r+=e*n,n*=60}),i*r):i*parseInt(r,10)}function u(e){return"[object Number]"===Object.prototype.toString.call(e)&&e%1===0&&!c.isNegativeZero(e)}var c=e("../common"),l=e("../type");t.exports=new l("tag:yaml.org,2002:int",{kind:"scalar",resolve:a,construct:s,predicate:u,represent:{binary:function(e){return"0b"+e.toString(2)},octal:function(e){return"0"+e.toString(8)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return"0x"+e.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},{"../common":2,"../type":13}],18:[function(e,t,n){"use strict";function r(e){if(null===e)return!1;try{var t="("+e+")",n=s.parse(t,{range:!0});return"Program"===n.type&&1===n.body.length&&"ExpressionStatement"===n.body[0].type&&"FunctionExpression"===n.body[0].expression.type}catch(r){return!1}}function i(e){var t,n="("+e+")",r=s.parse(n,{range:!0}),i=[];if("Program"!==r.type||1!==r.body.length||"ExpressionStatement"!==r.body[0].type||"FunctionExpression"!==r.body[0].expression.type)throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(e){i.push(e.name)}),t=r.body[0].expression.body.range,new Function(i,n.slice(t[0]+1,t[1]-1))}function o(e){return e.toString()}function a(e){return"[object Function]"===Object.prototype.toString.call(e)}var s;try{var u=e;s=u("esprima")}catch(c){"undefined"!=typeof window&&(s=window.esprima)}var l=e("../../type");t.exports=new l("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../../type":13}],19:[function(e,t,n){"use strict";function r(e){if(null===e)return!1;if(0===e.length)return!1;var t=e,n=/\/([gim]*)$/.exec(e),r="";if("/"===t[0]){if(n&&(r=n[1]),r.length>3)return!1;if("/"!==t[t.length-r.length-1])return!1}return!0}function i(e){var t=e,n=/\/([gim]*)$/.exec(e),r="";return"/"===t[0]&&(n&&(r=n[1]),t=t.slice(1,t.length-r.length-1)),new RegExp(t,r)}function o(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function a(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var s=e("../../type");t.exports=new s("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../../type":13}],20:[function(e,t,n){"use strict";function r(){return!0}function i(){}function o(){return""}function a(e){return"undefined"==typeof e}var s=e("../../type");t.exports=new s("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../../type":13}],21:[function(e,t,n){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},{"../type":13}],22:[function(e,t,n){"use strict";function r(e){return"<<"===e||null===e}var i=e("../type");t.exports=new i("tag:yaml.org,2002:merge",{kind:"scalar",resolve:r})},{"../type":13}],23:[function(e,t,n){"use strict";function r(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)}function i(){return null}function o(e){return null===e}var a=e("../type");t.exports=new a("tag:yaml.org,2002:null",{kind:"scalar",resolve:r,construct:i,predicate:o,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":13}],24:[function(e,t,n){"use strict";function r(e){if(null===e)return!0;var t,n,r,i,o,u=[],c=e;for(t=0,n=c.length;t<n;t+=1){if(r=c[t],o=!1,"[object Object]"!==s.call(r))return!1;for(i in r)if(a.call(r,i)){if(o)return!1;o=!0}if(!o)return!1;if(u.indexOf(i)!==-1)return!1;u.push(i)}return!0}function i(e){return null!==e?e:[]}var o=e("../type"),a=Object.prototype.hasOwnProperty,s=Object.prototype.toString;t.exports=new o("tag:yaml.org,2002:omap",{kind:"sequence",resolve:r,construct:i})},{"../type":13}],25:[function(e,t,n){"use strict";function r(e){if(null===e)return!0;var t,n,r,i,o,s=e;for(o=new Array(s.length),t=0,n=s.length;t<n;t+=1){if(r=s[t],"[object Object]"!==a.call(r))return!1;if(i=Object.keys(r),1!==i.length)return!1;o[t]=[i[0],r[i[0]]]}return!0}function i(e){if(null===e)return[];var t,n,r,i,o,a=e;for(o=new Array(a.length),t=0,n=a.length;t<n;t+=1)r=a[t],i=Object.keys(r),o[t]=[i[0],r[i[0]]];return o}var o=e("../type"),a=Object.prototype.toString;t.exports=new o("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:r,construct:i})},{"../type":13}],26:[function(e,t,n){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return null!==e?e:[]}})},{"../type":13}],27:[function(e,t,n){"use strict";function r(e){if(null===e)return!0;var t,n=e;for(t in n)if(a.call(n,t)&&null!==n[t])return!1;return!0}function i(e){return null!==e?e:{}}var o=e("../type"),a=Object.prototype.hasOwnProperty;t.exports=new o("tag:yaml.org,2002:set",{kind:"mapping",resolve:r,construct:i})},{"../type":13}],28:[function(e,t,n){"use strict";var r=e("../type");t.exports=new r("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return null!==e?e:""}})},{"../type":13}],29:[function(e,t,n){"use strict";function r(e){return null!==e&&(null!==s.exec(e)||null!==u.exec(e))}function i(e){var t,n,r,i,o,a,c,l,p,f,d=0,h=null;if(t=s.exec(e),null===t&&(t=u.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],r=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(n,r,i));if(o=+t[4],a=+t[5],c=+t[6],t[7]){for(d=t[7].slice(0,3);d.length<3;)d+="0";d=+d}return t[9]&&(l=+t[10],p=+(t[11]||0),h=6e4*(60*l+p),"-"===t[9]&&(h=-h)),f=new Date(Date.UTC(n,r,i,o,a,c,d)),h&&f.setTime(f.getTime()-h),f}function o(e){return e.toISOString()}var a=e("../type"),s=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),u=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");t.exports=new a("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:r,construct:i,instanceOf:Date,represent:o})},{"../type":13}],"/":[function(e,t,n){"use strict";var r=e("./lib/js-yaml.js");t.exports=r},{"./lib/js-yaml.js":1}]},{},[])("/")});
\ No newline at end of file
diff --git a/xos/core/xoslib/static/vendor/xosGlobalXosVendor.js b/xos/core/xoslib/static/vendor/xosGlobalXosVendor.js
index 5af32b8..a1b9bc6 100644
--- a/xos/core/xoslib/static/vendor/xosGlobalXosVendor.js
+++ b/xos/core/xoslib/static/vendor/xosGlobalXosVendor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.tabindex","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.datepicker","ui.bootstrap.position","ui.bootstrap.datepickerPopup","ui.bootstrap.debounce","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/year.html","uib/template/datepickerPopup/popup.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/template/pagination/pagination.html","uib/template/tooltip/tooltip-html-popup.html","uib/template/tooltip/tooltip-popup.html","uib/template/tooltip/tooltip-template-popup.html","uib/template/popover/popover-html.html","uib/template/popover/popover-template.html","uib/template/popover/popover.html","uib/template/progressbar/bar.html","uib/template/progressbar/progress.html","uib/template/progressbar/progressbar.html","uib/template/rating/rating.html","uib/template/tabs/tab.html","uib/template/tabs/tabset.html","uib/template/timepicker/timepicker.html","uib/template/typeahead/typeahead-match.html","uib/template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$q","$parse","$injector",function(e,t,n,a){var i=a.has("$animateCss")?a.get("$animateCss"):null;return{link:function(a,o,r){function l(){b=!!("horizontal"in r),b?(v={width:""},$={width:"0"}):(v={height:""},$={height:"0"}),a.$eval(r.uibCollapse)||o.addClass("in").addClass("collapse").attr("aria-expanded",!0).attr("aria-hidden",!1).css(v)}function s(e){return b?{width:e.scrollWidth+"px"}:{height:e.scrollHeight+"px"}}function u(){o.hasClass("collapse")&&o.hasClass("in")||t.resolve(m(a)).then(function(){o.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),i?i(o,{addClass:"in",easing:"ease",css:{overflow:"hidden"},to:s(o[0])}).start()["finally"](p):e.addClass(o,"in",{css:{overflow:"hidden"},to:s(o[0])}).then(p)})}function p(){o.removeClass("collapsing").addClass("collapse").css(v),f(a)}function c(){return o.hasClass("collapse")||o.hasClass("in")?void t.resolve(h(a)).then(function(){o.css(s(o[0])).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),i?i(o,{removeClass:"in",to:$}).start()["finally"](d):e.removeClass(o,"in",{to:$}).then(d)}):d()}function d(){o.css($),o.removeClass("collapsing").addClass("collapse"),g(a)}var m=n(r.expanding),f=n(r.expanded),h=n(r.collapsing),g=n(r.collapsed),b=!1,v={},$={};l(),a.$watch(r.uibCollapse,function(e){e?c():u()})}}}]),angular.module("ui.bootstrap.tabindex",[]).directive("uibTabindexToggle",function(){return{restrict:"A",link:function(e,t,n){n.$observe("disabled",function(e){n.$set("tabindex",e?-1:null)})}}}),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse","ui.bootstrap.tabindex"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(e,t,n){this.groups=[],this.closeOthers=function(a){var i=angular.isDefined(t.closeOthers)?e.$eval(t.closeOthers):n.closeOthers;i&&angular.forEach(this.groups,function(e){e!==a&&(e.isOpen=!1)})},this.addGroup=function(e){var t=this;this.groups.push(e),e.$on("$destroy",function(n){t.removeGroup(e)})},this.removeGroup=function(e){var t=this.groups.indexOf(e);t!==-1&&this.groups.splice(t,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(e,t){return t.templateUrl||"uib/template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,restrict:"A",templateUrl:function(e,t){return t.templateUrl||"uib/template/accordion/accordion-group.html"},scope:{heading:"@",panelClass:"@?",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(e){this.heading=e}},link:function(e,t,n,a){t.addClass("panel"),a.addGroup(e),e.openClass=n.openClass||"panel-open",e.panelClass=n.panelClass||"panel-default",e.$watch("isOpen",function(n){t.toggleClass(e.openClass,!!n),n&&a.closeOthers(e)}),e.toggleOpen=function(t){e.isDisabled||t&&32!==t.which||(e.isOpen=!e.isOpen)};var i="accordiongroup-"+e.$id+"-"+Math.floor(1e4*Math.random());e.headingId=i+"-tab",e.panelId=i+"-panel"}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(e,t,n,a,i){a.setHeading(i(e,angular.noop))}}}).directive("uibAccordionTransclude",function(){function e(){return"uib-accordion-header,data-uib-accordion-header,x-uib-accordion-header,uib\\:accordion-header,[uib-accordion-header],[data-uib-accordion-header],[x-uib-accordion-header]"}return{require:"^uibAccordionGroup",link:function(t,n,a,i){t.$watch(function(){return i[a.uibAccordionTransclude]},function(t){if(t){var a=angular.element(n[0].querySelector(e()));a.html(""),a.append(t)}})}}}),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$element","$attrs","$interpolate","$timeout",function(e,t,n,a,i){e.closeable=!!n.close,t.addClass("alert"),n.$set("role","alert"),e.closeable&&t.addClass("alert-dismissible");var o=angular.isDefined(n.dismissOnTimeout)?a(n.dismissOnTimeout)(e.$parent):null;o&&i(function(){e.close()},parseInt(o,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",restrict:"A",templateUrl:function(e,t){return t.templateUrl||"uib/template/alert/alert.html"},transclude:!0,scope:{close:"&"}}}),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(e){this.activeClass=e.activeClass||"active",this.toggleEvent=e.toggleEvent||"click"}]).directive("uibBtnRadio",["$parse",function(e){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(t,n,a,i){var o=i[0],r=i[1],l=e(a.uibUncheckable);n.find("input").css({display:"none"}),r.$render=function(){n.toggleClass(o.activeClass,angular.equals(r.$modelValue,t.$eval(a.uibBtnRadio)))},n.on(o.toggleEvent,function(){if(!a.disabled){var e=n.hasClass(o.activeClass);e&&!angular.isDefined(a.uncheckable)||t.$apply(function(){r.$setViewValue(e?null:t.$eval(a.uibBtnRadio)),r.$render()})}}),a.uibUncheckable&&t.$watch(l,function(e){a.$set("uncheckable",e?"":void 0)})}}}]).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(e,t,n,a){function i(){return r(n.btnCheckboxTrue,!0)}function o(){return r(n.btnCheckboxFalse,!1)}function r(t,n){return angular.isDefined(t)?e.$eval(t):n}var l=a[0],s=a[1];t.find("input").css({display:"none"}),s.$render=function(){t.toggleClass(l.activeClass,angular.equals(s.$modelValue,i()))},t.on(l.toggleEvent,function(){n.disabled||e.$apply(function(){s.$setViewValue(t.hasClass(l.activeClass)?o():i()),s.$render()})})}}}),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$timeout","$animate",function(e,t,n,a,i){function o(){for(;$.length;)$.shift()}function r(e){for(var t=0;t<g.length;t++)g[t].slide.active=t===e}function l(n,a,s){if(!y){if(angular.extend(n,{direction:s}),angular.extend(g[v].slide||{},{direction:s}),i.enabled(t)&&!e.$currentTransition&&g[a].element&&h.slides.length>1){g[a].element.data(b,n.direction);var u=h.getCurrentIndex();angular.isNumber(u)&&g[u].element&&g[u].element.data(b,n.direction),e.$currentTransition=!0,i.on("addClass",g[a].element,function(t,n){if("close"===n&&(e.$currentTransition=null,i.off("addClass",t),$.length)){var a=$.pop().slide,r=a.index,s=r>h.getCurrentIndex()?"next":"prev";o(),l(a,r,s)}})}e.active=n.index,v=n.index,r(a),c()}}function s(e){for(var t=0;t<g.length;t++)if(g[t].slide===e)return t}function u(){m&&(n.cancel(m),m=null)}function p(t){t.length||(e.$currentTransition=null,o())}function c(){u();var t=+e.interval;!isNaN(t)&&t>0&&(m=n(d,t))}function d(){var t=+e.interval;f&&!isNaN(t)&&t>0&&g.length?e.next():e.pause()}var m,f,h=this,g=h.slides=e.slides=[],b="uib-slideDirection",v=e.active,$=[],y=!1;t.addClass("carousel"),h.addSlide=function(t,n){g.push({slide:t,element:n}),g.sort(function(e,t){return+e.slide.index-+t.slide.index}),(t.index===e.active||1===g.length&&!angular.isNumber(e.active))&&(e.$currentTransition&&(e.$currentTransition=null),v=t.index,e.active=t.index,r(v),h.select(g[s(t)]),1===g.length&&e.play())},h.getCurrentIndex=function(){for(var e=0;e<g.length;e++)if(g[e].slide.index===v)return e},h.next=e.next=function(){var t=(h.getCurrentIndex()+1)%g.length;return 0===t&&e.noWrap()?void e.pause():h.select(g[t],"next")},h.prev=e.prev=function(){var t=h.getCurrentIndex()-1<0?g.length-1:h.getCurrentIndex()-1;return e.noWrap()&&t===g.length-1?void e.pause():h.select(g[t],"prev")},h.removeSlide=function(t){var n=s(t),a=$.indexOf(g[n]);a!==-1&&$.splice(a,1),g.splice(n,1),g.length>0&&v===n?n>=g.length?(v=g.length-1,e.active=v,r(v),h.select(g[g.length-1])):(v=n,e.active=v,r(v),h.select(g[n])):v>n&&(v--,e.active=v),0===g.length&&(v=null,e.active=null,o())},h.select=e.select=function(t,n){var a=s(t.slide);void 0===n&&(n=a>h.getCurrentIndex()?"next":"prev"),t.slide.index===v||e.$currentTransition?t&&t.slide.index!==v&&e.$currentTransition&&$.push(g[a]):l(t.slide,a,n)},e.indexOfSlide=function(e){return+e.slide.index},e.isActive=function(t){return e.active===t.slide.index},e.isPrevDisabled=function(){return 0===e.active&&e.noWrap()},e.isNextDisabled=function(){return e.active===g.length-1&&e.noWrap()},e.pause=function(){e.noPause||(f=!1,u())},e.play=function(){f||(f=!0,c())},t.on("mouseenter",e.pause),t.on("mouseleave",e.play),e.$on("$destroy",function(){y=!0,u()}),e.$watch("noTransition",function(e){i.enabled(t,!e)}),e.$watch("interval",c),e.$watchCollection("slides",p),e.$watch("active",function(e){if(angular.isNumber(e)&&v!==e){for(var t=0;t<g.length;t++)if(g[t].slide.index===e){e=t;break}var n=g[e];n&&(r(e),h.select(g[e]),v=e)}})}]).directive("uibCarousel",function(){return{transclude:!0,controller:"UibCarouselController",controllerAs:"carousel",restrict:"A",templateUrl:function(e,t){return t.templateUrl||"uib/template/carousel/carousel.html"},scope:{active:"=",interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}).directive("uibSlide",["$animate",function(e){return{require:"^uibCarousel",restrict:"A",transclude:!0,templateUrl:function(e,t){return t.templateUrl||"uib/template/carousel/slide.html"},scope:{actual:"=?",index:"=?"},link:function(t,n,a,i){n.addClass("item"),i.addSlide(t,n),t.$on("$destroy",function(){i.removeSlide(t)}),t.$watch("active",function(t){e[t?"addClass":"removeClass"](n,"active")})}}}]).animation(".item",["$animateCss",function(e){function t(e,t,n){e.removeClass(t),n&&n()}var n="uib-slideDirection";return{beforeAddClass:function(a,i,o){if("active"===i){var r=!1,l=a.data(n),s="next"===l?"left":"right",u=t.bind(this,a,s+" "+l,o);return a.addClass(l),e(a,{addClass:s}).start().done(u),function(){r=!0}}o()},beforeRemoveClass:function(a,i,o){if("active"===i){var r=!1,l=a.data(n),s="next"===l?"left":"right",u=t.bind(this,a,s,o);return e(a,{addClass:s}).start().done(u),function(){r=!0}}o()}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","dateFilter","orderByFilter",function(e,t,n,a){function i(e){var t=[],n=e.split(""),i=e.indexOf("'");if(i>-1){var o=!1;e=e.split("");for(var r=i;r<e.length;r++)o?("'"===e[r]&&(r+1<e.length&&"'"===e[r+1]?(e[r+1]="$",n[r+1]=""):(n[r]="",o=!1)),e[r]="$"):"'"===e[r]&&(e[r]="$",n[r]="",o=!0);e=e.join("")}return angular.forEach(g,function(a){var i=e.indexOf(a.key);if(i>-1){e=e.split(""),n[i]="("+a.regex+")",e[i]="$";for(var o=i+1,r=i+a.key.length;o<r;o++)n[o]="",e[o]="$";e=e.join(""),t.push({index:i,key:a.key,apply:a.apply,matcher:a.regex})}}),{regex:new RegExp("^"+n.join("")+"$"),map:a(t,"index")}}function o(e){for(var t,n,a=[],i=0;i<e.length;)if(angular.isNumber(n)){if("'"===e.charAt(i))(i+1>=e.length||"'"!==e.charAt(i+1))&&(a.push(r(e,n,i)),n=null);else if(i===e.length)for(;n<e.length;)t=l(e,n),a.push(t),n=t.endIdx;i++}else"'"!==e.charAt(i)?(t=l(e,i),a.push(t.parser),i=t.endIdx):(n=i,i++);return a}function r(e,t,n){return function(){return e.substr(t+1,n-t-1)}}function l(e,t){for(var n=e.substr(t),a=0;a<g.length;a++)if(new RegExp("^"+g[a].key).test(n)){var i=g[a];return{endIdx:t+i.key.length,parser:i.formatter}}return{endIdx:t+1,parser:function(){return n.charAt(0)}}}function s(e,t,n){return!(n<1)&&(1===t&&n>28?29===n&&(e%4===0&&e%100!==0||e%400===0):3!==t&&5!==t&&8!==t&&10!==t||n<31)}function u(e){return parseInt(e,10)}function p(e,t){return e&&t?f(e,t):e}function c(e,t){return e&&t?f(e,t,!0):e}function d(e,t){e=e.replace(/:/g,"");var n=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(n)?t:n}function m(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function f(e,t,n){n=n?-1:1;var a=e.getTimezoneOffset(),i=d(t,a);return m(e,n*(i-a))}var h,g,b=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){h=t.id,this.parsers={},this.formatters={},g=[{key:"yyyy",regex:"\\d{4}",apply:function(e){this.year=+e},formatter:function(e){var t=new Date;return t.setFullYear(Math.abs(e.getFullYear())),n(t,"yyyy")}},{key:"yy",regex:"\\d{2}",apply:function(e){e=+e,this.year=e<69?e+2e3:e+1900},formatter:function(e){var t=new Date;return t.setFullYear(Math.abs(e.getFullYear())),n(t,"yy")}},{key:"y",regex:"\\d{1,4}",apply:function(e){this.year=+e},formatter:function(e){var t=new Date;return t.setFullYear(Math.abs(e.getFullYear())),n(t,"y")}},{key:"M!",regex:"0?[1-9]|1[0-2]",apply:function(e){this.month=e-1},formatter:function(e){var t=e.getMonth();return/^[0-9]$/.test(t)?n(e,"MM"):n(e,"M")}},{key:"MMMM",regex:t.DATETIME_FORMATS.MONTH.join("|"),apply:function(e){this.month=t.DATETIME_FORMATS.MONTH.indexOf(e)},formatter:function(e){return n(e,"MMMM")}},{key:"MMM",regex:t.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(e){this.month=t.DATETIME_FORMATS.SHORTMONTH.indexOf(e)},formatter:function(e){return n(e,"MMM")}},{key:"MM",regex:"0[1-9]|1[0-2]",apply:function(e){this.month=e-1},formatter:function(e){return n(e,"MM")}},{key:"M",regex:"[1-9]|1[0-2]",apply:function(e){this.month=e-1},formatter:function(e){return n(e,"M")}},{key:"d!",regex:"[0-2]?[0-9]{1}|3[0-1]{1}",apply:function(e){this.date=+e},formatter:function(e){var t=e.getDate();return/^[1-9]$/.test(t)?n(e,"dd"):n(e,"d")}},{key:"dd",regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(e){this.date=+e},formatter:function(e){return n(e,"dd")}},{key:"d",regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(e){this.date=+e},formatter:function(e){return n(e,"d")}},{key:"EEEE",regex:t.DATETIME_FORMATS.DAY.join("|"),formatter:function(e){return n(e,"EEEE")}},{key:"EEE",regex:t.DATETIME_FORMATS.SHORTDAY.join("|"),formatter:function(e){return n(e,"EEE")}},{key:"HH",regex:"(?:0|1)[0-9]|2[0-3]",apply:function(e){this.hours=+e},formatter:function(e){return n(e,"HH")}},{key:"hh",regex:"0[0-9]|1[0-2]",apply:function(e){this.hours=+e},formatter:function(e){return n(e,"hh")}},{key:"H",regex:"1?[0-9]|2[0-3]",apply:function(e){this.hours=+e},formatter:function(e){return n(e,"H")}},{key:"h",regex:"[0-9]|1[0-2]",apply:function(e){this.hours=+e},formatter:function(e){return n(e,"h")}},{key:"mm",regex:"[0-5][0-9]",apply:function(e){this.minutes=+e},formatter:function(e){return n(e,"mm")}},{key:"m",regex:"[0-9]|[1-5][0-9]",apply:function(e){this.minutes=+e},formatter:function(e){return n(e,"m")}},{key:"sss",regex:"[0-9][0-9][0-9]",apply:function(e){this.milliseconds=+e},formatter:function(e){return n(e,"sss")}},{key:"ss",regex:"[0-5][0-9]",apply:function(e){this.seconds=+e},formatter:function(e){return n(e,"ss")}},{key:"s",regex:"[0-9]|[1-5][0-9]",apply:function(e){this.seconds=+e},formatter:function(e){return n(e,"s")}},{key:"a",regex:t.DATETIME_FORMATS.AMPMS.join("|"),apply:function(e){12===this.hours&&(this.hours=0),"PM"===e&&(this.hours+=12)},formatter:function(e){return n(e,"a")}},{key:"Z",regex:"[+-]\\d{4}",apply:function(e){var t=e.match(/([+-])(\d{2})(\d{2})/),n=t[1],a=t[2],i=t[3];this.hours+=u(n+a),this.minutes+=u(n+i)},formatter:function(e){return n(e,"Z")}},{key:"ww",regex:"[0-4][0-9]|5[0-3]",formatter:function(e){return n(e,"ww")}},{key:"w",regex:"[0-9]|[1-4][0-9]|5[0-3]",formatter:function(e){return n(e,"w")}},{key:"GGGG",regex:t.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g,"\\s"),formatter:function(e){return n(e,"GGGG")}},{key:"GGG",regex:t.DATETIME_FORMATS.ERAS.join("|"),formatter:function(e){return n(e,"GGG")}},{key:"GG",regex:t.DATETIME_FORMATS.ERAS.join("|"),formatter:function(e){return n(e,"GG")}},{key:"G",regex:t.DATETIME_FORMATS.ERAS.join("|"),formatter:function(e){return n(e,"G")}}]},this.init(),this.filter=function(e,n){if(!angular.isDate(e)||isNaN(e)||!n)return"";n=t.DATETIME_FORMATS[n]||n,t.id!==h&&this.init(),this.formatters[n]||(this.formatters[n]=o(n));var a=this.formatters[n];return a.reduce(function(t,n){return t+n(e)},"")},this.parse=function(n,a,o){if(!angular.isString(n)||!a)return n;a=t.DATETIME_FORMATS[a]||a,a=a.replace(b,"\\$&"),t.id!==h&&this.init(),this.parsers[a]||(this.parsers[a]=i(a,"apply"));var r=this.parsers[a],l=r.regex,u=r.map,p=n.match(l),c=!1;if(p&&p.length){var d,m;angular.isDate(o)&&!isNaN(o.getTime())?d={year:o.getFullYear(),month:o.getMonth(),date:o.getDate(),hours:o.getHours(),minutes:o.getMinutes(),seconds:o.getSeconds(),milliseconds:o.getMilliseconds()}:(o&&e.warn("dateparser:","baseDate is not a valid date"),d={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var f=1,g=p.length;f<g;f++){var v=u[f-1];"Z"===v.matcher&&(c=!0),v.apply&&v.apply.call(d,p[f])}var $=c?Date.prototype.setUTCFullYear:Date.prototype.setFullYear,y=c?Date.prototype.setUTCHours:Date.prototype.setHours;return s(d.year,d.month,d.date)&&(!angular.isDate(o)||isNaN(o.getTime())||c?(m=new Date(0),$.call(m,d.year,d.month,d.date),y.call(m,d.hours||0,d.minutes||0,d.seconds||0,d.milliseconds||0)):(m=new Date(o),$.call(m,d.year,d.month,d.date),y.call(m,d.hours,d.minutes,d.seconds,d.milliseconds))),m}},this.toTimezone=p,this.fromTimezone=c,this.timezoneToOffset=d,this.addDateMinutes=m,this.convertTimezoneToLocal=f}]),angular.module("ui.bootstrap.isClass",[]).directive("uibIsClass",["$animate",function(e){var t=/^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/,n=/^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/;return{restrict:"A",compile:function(a,i){function o(e,t,n){s.push(e),u.push({scope:e,element:t}),f.forEach(function(t,n){r(t,e)}),e.$on("$destroy",l)}function r(t,a){var i=t.match(n),o=a.$eval(i[1]),r=i[2],l=p[t];if(!l){var s=function(t){var n=null;u.some(function(e){var a=e.scope.$eval(d);if(a===t)return n=e,!0}),l.lastActivated!==n&&(l.lastActivated&&e.removeClass(l.lastActivated.element,o),n&&e.addClass(n.element,o),l.lastActivated=n)};p[t]=l={lastActivated:null,scope:a,watchFn:s,compareWithExp:r,watcher:a.$watch(r,s)}}l.watchFn(a.$eval(r))}function l(e){var t=e.targetScope,n=s.indexOf(t);if(s.splice(n,1),u.splice(n,1),s.length){var a=s[0];angular.forEach(p,function(e){e.scope===t&&(e.watcher=a.$watch(e.compareWithExp,e.watchFn),e.scope=a)})}else p={}}var s=[],u=[],p={},c=i.uibIsClass.match(t),d=c[2],m=c[1],f=m.split(",");return o}}}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.isClass"]).value("$datepickerSuppressError",!1).value("$datepickerLiteralWarning",!0).constant("uibDatepickerConfig",{datepickerMode:"day",formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",maxDate:null,maxMode:"year",minDate:null,minMode:"day",monthColumns:3,ngModelOptions:{},shortcutPropagation:!1,showWeeks:!0,yearColumns:5,yearRows:4}).controller("UibDatepickerController",["$scope","$element","$attrs","$parse","$interpolate","$locale","$log","dateFilter","uibDatepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","uibDateParser",function(e,t,n,a,i,o,r,l,s,u,p,c){function d(t){e.datepickerMode=t,e.datepickerOptions.datepickerMode=t}var m=this,f={$setViewValue:angular.noop},h={},g=[];t.addClass("uib-datepicker"),n.$set("role","application"),e.datepickerOptions||(e.datepickerOptions={}),this.modes=["day","month","year"],["customClass","dateDisabled","datepickerMode","formatDay","formatDayHeader","formatDayTitle","formatMonth","formatMonthTitle","formatYear","maxDate","maxMode","minDate","minMode","monthColumns","showWeeks","shortcutPropagation","startingDay","yearColumns","yearRows"].forEach(function(t){switch(t){case"customClass":case"dateDisabled":e[t]=e.datepickerOptions[t]||angular.noop;break;case"datepickerMode":e.datepickerMode=angular.isDefined(e.datepickerOptions.datepickerMode)?e.datepickerOptions.datepickerMode:s.datepickerMode;break;case"formatDay":case"formatDayHeader":case"formatDayTitle":case"formatMonth":case"formatMonthTitle":case"formatYear":m[t]=angular.isDefined(e.datepickerOptions[t])?i(e.datepickerOptions[t])(e.$parent):s[t];break;case"monthColumns":case"showWeeks":case"shortcutPropagation":case"yearColumns":case"yearRows":m[t]=angular.isDefined(e.datepickerOptions[t])?e.datepickerOptions[t]:s[t];break;case"startingDay":angular.isDefined(e.datepickerOptions.startingDay)?m.startingDay=e.datepickerOptions.startingDay:angular.isNumber(s.startingDay)?m.startingDay=s.startingDay:m.startingDay=(o.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7;break;case"maxDate":case"minDate":e.$watch("datepickerOptions."+t,function(e){e?angular.isDate(e)?m[t]=c.fromTimezone(new Date(e),h.timezone):(u&&r.warn("Literal date support has been deprecated, please switch to date object usage"),m[t]=new Date(l(e,"medium"))):m[t]=s[t]?c.fromTimezone(new Date(s[t]),h.timezone):null,m.refreshView()});break;case"maxMode":case"minMode":e.datepickerOptions[t]?e.$watch(function(){return e.datepickerOptions[t]},function(n){m[t]=e[t]=angular.isDefined(n)?n:e.datepickerOptions[t],("minMode"===t&&m.modes.indexOf(e.datepickerOptions.datepickerMode)<m.modes.indexOf(m[t])||"maxMode"===t&&m.modes.indexOf(e.datepickerOptions.datepickerMode)>m.modes.indexOf(m[t]))&&(e.datepickerMode=m[t],e.datepickerOptions.datepickerMode=m[t])}):m[t]=e[t]=s[t]||null}}),e.uniqueId="datepicker-"+e.$id+"-"+Math.floor(1e4*Math.random()),e.disabled=angular.isDefined(n.disabled)||!1,angular.isDefined(n.ngDisabled)&&g.push(e.$parent.$watch(n.ngDisabled,function(t){e.disabled=t,m.refreshView()})),e.isActive=function(t){return 0===m.compare(t.date,m.activeDate)&&(e.activeDateId=t.uid,!0)},this.init=function(t){f=t,h=t.$options||e.datepickerOptions.ngModelOptions||s.ngModelOptions,e.datepickerOptions.initDate?(m.activeDate=c.fromTimezone(e.datepickerOptions.initDate,h.timezone)||new Date,e.$watch("datepickerOptions.initDate",function(e){e&&(f.$isEmpty(f.$modelValue)||f.$invalid)&&(m.activeDate=c.fromTimezone(e,h.timezone),m.refreshView())})):m.activeDate=new Date;var n=f.$modelValue?new Date(f.$modelValue):new Date;this.activeDate=isNaN(n)?c.fromTimezone(new Date,h.timezone):c.fromTimezone(n,h.timezone),f.$render=function(){m.render()}},this.render=function(){if(f.$viewValue){var e=new Date(f.$viewValue),t=!isNaN(e);t?this.activeDate=c.fromTimezone(e,h.timezone):p||r.error('Datepicker directive: "ng-model" value must be a Date object')}this.refreshView()},this.refreshView=function(){if(this.element){e.selectedDt=null,this._refreshView(),e.activeDt&&(e.activeDateId=e.activeDt.uid);var t=f.$viewValue?new Date(f.$viewValue):null;t=c.fromTimezone(t,h.timezone),f.$setValidity("dateDisabled",!t||this.element&&!this.isDisabled(t))}},this.createDateObject=function(t,n){var a=f.$viewValue?new Date(f.$viewValue):null;a=c.fromTimezone(a,h.timezone);var i=new Date;i=c.fromTimezone(i,h.timezone);var o=this.compare(t,i),r={date:t,label:c.filter(t,n),selected:a&&0===this.compare(t,a),disabled:this.isDisabled(t),past:o<0,current:0===o,future:o>0,customClass:this.customClass(t)||null};return a&&0===this.compare(t,a)&&(e.selectedDt=r),m.activeDate&&0===this.compare(r.date,m.activeDate)&&(e.activeDt=r),r},this.isDisabled=function(t){return e.disabled||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0||e.dateDisabled&&e.dateDisabled({date:t,mode:e.datepickerMode})},this.customClass=function(t){return e.customClass({date:t,mode:e.datepickerMode})},this.split=function(e,t){for(var n=[];e.length>0;)n.push(e.splice(0,t));return n},e.select=function(t){if(e.datepickerMode===m.minMode){var n=f.$viewValue?c.fromTimezone(new Date(f.$viewValue),h.timezone):new Date(0,0,0,0,0,0,0);n.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),n=c.toTimezone(n,h.timezone),f.$setViewValue(n),f.$render()}else m.activeDate=t,d(m.modes[m.modes.indexOf(e.datepickerMode)-1]),e.$emit("uib:datepicker.mode");e.$broadcast("uib:datepicker.focus")},e.move=function(e){var t=m.activeDate.getFullYear()+e*(m.step.years||0),n=m.activeDate.getMonth()+e*(m.step.months||0);m.activeDate.setFullYear(t,n,1),m.refreshView()},e.toggleMode=function(t){t=t||1,e.datepickerMode===m.maxMode&&1===t||e.datepickerMode===m.minMode&&t===-1||(d(m.modes[m.modes.indexOf(e.datepickerMode)+t]),e.$emit("uib:datepicker.mode"))},e.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var b=function(){m.element[0].focus()};e.$on("uib:datepicker.focus",b),e.keydown=function(t){var n=e.keys[t.which];if(n&&!t.shiftKey&&!t.altKey&&!e.disabled)if(t.preventDefault(),m.shortcutPropagation||t.stopPropagation(),"enter"===n||"space"===n){if(m.isDisabled(m.activeDate))return;e.select(m.activeDate)}else!t.ctrlKey||"up"!==n&&"down"!==n?(m.handleKeyDown(n,t),m.refreshView()):e.toggleMode("up"===n?1:-1)},t.on("keydown",function(t){e.$apply(function(){e.keydown(t)})}),e.$on("$destroy",function(){for(;g.length;)g.shift()()})}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(e,t,n){function a(e,t){return 1!==t||e%4!==0||e%100===0&&e%400!==0?o[t]:29}function i(e){var t=new Date(e);t.setDate(t.getDate()+4-(t.getDay()||7));var n=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((n-t)/864e5)/7)+1}var o=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=t,this.init=function(t){angular.extend(t,this),e.showWeeks=t.showWeeks,t.refreshView()},this.getDates=function(e,t){for(var n,a=new Array(t),i=new Date(e),o=0;o<t;)n=new Date(i),a[o++]=n,i.setDate(i.getDate()+1);return a},this._refreshView=function(){var t=this.activeDate.getFullYear(),a=this.activeDate.getMonth(),o=new Date(this.activeDate);o.setFullYear(t,a,1);var r=this.startingDay-o.getDay(),l=r>0?7-r:-r,s=new Date(o);l>0&&s.setDate(-l+1);for(var u=this.getDates(s,42),p=0;p<42;p++)u[p]=angular.extend(this.createDateObject(u[p],this.formatDay),{secondary:u[p].getMonth()!==a,uid:e.uniqueId+"-"+p});e.labels=new Array(7);for(var c=0;c<7;c++)e.labels[c]={abbr:n(u[c].date,this.formatDayHeader),full:n(u[c].date,"EEEE")};if(e.title=n(this.activeDate,this.formatDayTitle),e.rows=this.split(u,7),e.showWeeks){e.weekNumbers=[];for(var d=(11-this.startingDay)%7,m=e.rows.length,f=0;f<m;f++)e.weekNumbers.push(i(e.rows[f][d].date))}},this.compare=function(e,t){var n=new Date(e.getFullYear(),e.getMonth(),e.getDate()),a=new Date(t.getFullYear(),t.getMonth(),t.getDate());return n.setFullYear(e.getFullYear()),a.setFullYear(t.getFullYear()),n-a},this.handleKeyDown=function(e,t){var n=this.activeDate.getDate();if("left"===e)n-=1;else if("up"===e)n-=7;else if("right"===e)n+=1;else if("down"===e)n+=7;else if("pageup"===e||"pagedown"===e){var i=this.activeDate.getMonth()+("pageup"===e?-1:1);this.activeDate.setMonth(i,1),n=Math.min(a(this.activeDate.getFullYear(),this.activeDate.getMonth()),n)}else"home"===e?n=1:"end"===e&&(n=a(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(n)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(e,t,n){this.step={years:1},this.element=t,this.init=function(e){angular.extend(e,this),e.refreshView()},this._refreshView=function(){for(var t,a=new Array(12),i=this.activeDate.getFullYear(),o=0;o<12;o++)t=new Date(this.activeDate),t.setFullYear(i,o,1),a[o]=angular.extend(this.createDateObject(t,this.formatMonth),{uid:e.uniqueId+"-"+o});e.title=n(this.activeDate,this.formatMonthTitle),e.rows=this.split(a,this.monthColumns),e.yearHeaderColspan=this.monthColumns>3?this.monthColumns-2:1},this.compare=function(e,t){var n=new Date(e.getFullYear(),e.getMonth()),a=new Date(t.getFullYear(),t.getMonth());return n.setFullYear(e.getFullYear()),a.setFullYear(t.getFullYear()),n-a},this.handleKeyDown=function(e,t){var n=this.activeDate.getMonth();if("left"===e)n-=1;else if("up"===e)n-=this.monthColumns;else if("right"===e)n+=1;else if("down"===e)n+=this.monthColumns;else if("pageup"===e||"pagedown"===e){var a=this.activeDate.getFullYear()+("pageup"===e?-1:1);this.activeDate.setFullYear(a)}else"home"===e?n=0:"end"===e&&(n=11);this.activeDate.setMonth(n)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(e,t,n){function a(e){return parseInt((e-1)/o,10)*o+1}var i,o;this.element=t,this.yearpickerInit=function(){i=this.yearColumns,o=this.yearRows*i,this.step={years:o}},this._refreshView=function(){for(var t,n=new Array(o),r=0,l=a(this.activeDate.getFullYear());r<o;r++)t=new Date(this.activeDate),t.setFullYear(l+r,0,1),n[r]=angular.extend(this.createDateObject(t,this.formatYear),{uid:e.uniqueId+"-"+r});e.title=[n[0].label,n[o-1].label].join(" - "),e.rows=this.split(n,i),e.columns=i},this.compare=function(e,t){return e.getFullYear()-t.getFullYear()},this.handleKeyDown=function(e,t){var n=this.activeDate.getFullYear();"left"===e?n-=1:"up"===e?n-=i:"right"===e?n+=1:"down"===e?n+=i:"pageup"===e||"pagedown"===e?n+=("pageup"===e?-1:1)*o:"home"===e?n=a(this.activeDate.getFullYear()):"end"===e&&(n=a(this.activeDate.getFullYear())+o-1),this.activeDate.setFullYear(n)}}]).directive("uibDatepicker",function(){return{templateUrl:function(e,t){return t.templateUrl||"uib/template/datepicker/datepicker.html"},scope:{datepickerOptions:"=?"},require:["uibDatepicker","^ngModel"],restrict:"A",controller:"UibDatepickerController",controllerAs:"datepicker",link:function(e,t,n,a){var i=a[0],o=a[1];i.init(o)}}}).directive("uibDaypicker",function(){return{templateUrl:function(e,t){return t.templateUrl||"uib/template/datepicker/day.html"},require:["^uibDatepicker","uibDaypicker"],restrict:"A",controller:"UibDaypickerController",link:function(e,t,n,a){var i=a[0],o=a[1];o.init(i)}}}).directive("uibMonthpicker",function(){return{templateUrl:function(e,t){return t.templateUrl||"uib/template/datepicker/month.html"},require:["^uibDatepicker","uibMonthpicker"],restrict:"A",controller:"UibMonthpickerController",link:function(e,t,n,a){var i=a[0],o=a[1];o.init(i)}}}).directive("uibYearpicker",function(){return{templateUrl:function(e,t){return t.templateUrl||"uib/template/datepicker/year.html"},require:["^uibDatepicker","uibYearpicker"],restrict:"A",controller:"UibYearpickerController",link:function(e,t,n,a){var i=a[0];angular.extend(i,a[1]),i.yearpickerInit(),i.refreshView()}}}),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(e,t){var n,a,i={normal:/(auto|scroll)/,
 hidden:/(auto|scroll|hidden)/},o={auto:/\s?auto?\s?/i,primary:/^(top|bottom|left|right)$/,secondary:/^(top|bottom|left|right|center)$/,vertical:/^(top|bottom)$/},r=/(HTML|BODY)/;return{getRawNode:function(e){return e.nodeName?e:e[0]||e},parseStyle:function(e){return e=parseFloat(e),isFinite(e)?e:0},offsetParent:function(n){function a(e){return"static"===(t.getComputedStyle(e).position||"static")}n=this.getRawNode(n);for(var i=n.offsetParent||e[0].documentElement;i&&i!==e[0].documentElement&&a(i);)i=i.offsetParent;return i||e[0].documentElement},scrollbarWidth:function(i){if(i){if(angular.isUndefined(a)){var o=e.find("body");o.addClass("uib-position-body-scrollbar-measure"),a=t.innerWidth-o[0].clientWidth,a=isFinite(a)?a:0,o.removeClass("uib-position-body-scrollbar-measure")}return a}if(angular.isUndefined(n)){var r=angular.element('<div class="uib-position-scrollbar-measure"></div>');e.find("body").append(r),n=r[0].offsetWidth-r[0].clientWidth,n=isFinite(n)?n:0,r.remove()}return n},scrollbarPadding:function(e){e=this.getRawNode(e);var n=t.getComputedStyle(e),a=this.parseStyle(n.paddingRight),i=this.parseStyle(n.paddingBottom),o=this.scrollParent(e,!1,!0),l=this.scrollbarWidth(r.test(o.tagName));return{scrollbarWidth:l,widthOverflow:o.scrollWidth>o.clientWidth,right:a+l,originalRight:a,heightOverflow:o.scrollHeight>o.clientHeight,bottom:i+l,originalBottom:i}},isScrollable:function(e,n){e=this.getRawNode(e);var a=n?i.hidden:i.normal,o=t.getComputedStyle(e);return a.test(o.overflow+o.overflowY+o.overflowX)},scrollParent:function(n,a,o){n=this.getRawNode(n);var r=a?i.hidden:i.normal,l=e[0].documentElement,s=t.getComputedStyle(n);if(o&&r.test(s.overflow+s.overflowY+s.overflowX))return n;var u="absolute"===s.position,p=n.parentElement||l;if(p===l||"fixed"===s.position)return l;for(;p.parentElement&&p!==l;){var c=t.getComputedStyle(p);if(u&&"static"!==c.position&&(u=!1),!u&&r.test(c.overflow+c.overflowY+c.overflowX))break;p=p.parentElement}return p},position:function(n,a){n=this.getRawNode(n);var i=this.offset(n);if(a){var o=t.getComputedStyle(n);i.top-=this.parseStyle(o.marginTop),i.left-=this.parseStyle(o.marginLeft)}var r=this.offsetParent(n),l={top:0,left:0};return r!==e[0].documentElement&&(l=this.offset(r),l.top+=r.clientTop-r.scrollTop,l.left+=r.clientLeft-r.scrollLeft),{width:Math.round(angular.isNumber(i.width)?i.width:n.offsetWidth),height:Math.round(angular.isNumber(i.height)?i.height:n.offsetHeight),top:Math.round(i.top-l.top),left:Math.round(i.left-l.left)}},offset:function(n){n=this.getRawNode(n);var a=n.getBoundingClientRect();return{width:Math.round(angular.isNumber(a.width)?a.width:n.offsetWidth),height:Math.round(angular.isNumber(a.height)?a.height:n.offsetHeight),top:Math.round(a.top+(t.pageYOffset||e[0].documentElement.scrollTop)),left:Math.round(a.left+(t.pageXOffset||e[0].documentElement.scrollLeft))}},viewportOffset:function(n,a,i){n=this.getRawNode(n),i=i!==!1;var o=n.getBoundingClientRect(),r={top:0,left:0,bottom:0,right:0},l=a?e[0].documentElement:this.scrollParent(n),s=l.getBoundingClientRect();if(r.top=s.top+l.clientTop,r.left=s.left+l.clientLeft,l===e[0].documentElement&&(r.top+=t.pageYOffset,r.left+=t.pageXOffset),r.bottom=r.top+l.clientHeight,r.right=r.left+l.clientWidth,i){var u=t.getComputedStyle(l);r.top+=this.parseStyle(u.paddingTop),r.bottom-=this.parseStyle(u.paddingBottom),r.left+=this.parseStyle(u.paddingLeft),r.right-=this.parseStyle(u.paddingRight)}return{top:Math.round(o.top-r.top),bottom:Math.round(r.bottom-o.bottom),left:Math.round(o.left-r.left),right:Math.round(r.right-o.right)}},parsePlacement:function(e){var t=o.auto.test(e);return t&&(e=e.replace(o.auto,"")),e=e.split("-"),e[0]=e[0]||"top",o.primary.test(e[0])||(e[0]="top"),e[1]=e[1]||"center",o.secondary.test(e[1])||(e[1]="center"),t?e[2]=!0:e[2]=!1,e},positionElements:function(e,n,a,i){e=this.getRawNode(e),n=this.getRawNode(n);var r=angular.isDefined(n.offsetWidth)?n.offsetWidth:n.prop("offsetWidth"),l=angular.isDefined(n.offsetHeight)?n.offsetHeight:n.prop("offsetHeight");a=this.parsePlacement(a);var s=i?this.offset(e):this.position(e),u={top:0,left:0,placement:""};if(a[2]){var p=this.viewportOffset(e,i),c=t.getComputedStyle(n),d={width:r+Math.round(Math.abs(this.parseStyle(c.marginLeft)+this.parseStyle(c.marginRight))),height:l+Math.round(Math.abs(this.parseStyle(c.marginTop)+this.parseStyle(c.marginBottom)))};if(a[0]="top"===a[0]&&d.height>p.top&&d.height<=p.bottom?"bottom":"bottom"===a[0]&&d.height>p.bottom&&d.height<=p.top?"top":"left"===a[0]&&d.width>p.left&&d.width<=p.right?"right":"right"===a[0]&&d.width>p.right&&d.width<=p.left?"left":a[0],a[1]="top"===a[1]&&d.height-s.height>p.bottom&&d.height-s.height<=p.top?"bottom":"bottom"===a[1]&&d.height-s.height>p.top&&d.height-s.height<=p.bottom?"top":"left"===a[1]&&d.width-s.width>p.right&&d.width-s.width<=p.left?"right":"right"===a[1]&&d.width-s.width>p.left&&d.width-s.width<=p.right?"left":a[1],"center"===a[1])if(o.vertical.test(a[0])){var m=s.width/2-r/2;p.left+m<0&&d.width-s.width<=p.right?a[1]="left":p.right+m<0&&d.width-s.width<=p.left&&(a[1]="right")}else{var f=s.height/2-d.height/2;p.top+f<0&&d.height-s.height<=p.bottom?a[1]="top":p.bottom+f<0&&d.height-s.height<=p.top&&(a[1]="bottom")}}switch(a[0]){case"top":u.top=s.top-l;break;case"bottom":u.top=s.top+s.height;break;case"left":u.left=s.left-r;break;case"right":u.left=s.left+s.width}switch(a[1]){case"top":u.top=s.top;break;case"bottom":u.top=s.top+s.height-l;break;case"left":u.left=s.left;break;case"right":u.left=s.left+s.width-r;break;case"center":o.vertical.test(a[0])?u.left=s.left+s.width/2-r/2:u.top=s.top+s.height/2-l/2}return u.top=Math.round(u.top),u.left=Math.round(u.left),u.placement="center"===a[1]?a[0]:a[0]+"-"+a[1],u},adjustTop:function(e,t,n,a){if(e.indexOf("top")!==-1&&n!==a)return{top:t.top-a+"px"}},positionArrow:function(e,n){e=this.getRawNode(e);var a=e.querySelector(".tooltip-inner, .popover-inner");if(a){var i=angular.element(a).hasClass("tooltip-inner"),r=i?e.querySelector(".tooltip-arrow"):e.querySelector(".arrow");if(r){var l={top:"",bottom:"",left:"",right:""};if(n=this.parsePlacement(n),"center"===n[1])return void angular.element(r).css(l);var s="border-"+n[0]+"-width",u=t.getComputedStyle(r)[s],p="border-";p+=o.vertical.test(n[0])?n[0]+"-"+n[1]:n[1]+"-"+n[0],p+="-radius";var c=t.getComputedStyle(i?a:e)[p];switch(n[0]){case"top":l.bottom=i?"0":"-"+u;break;case"bottom":l.top=i?"0":"-"+u;break;case"left":l.right=i?"0":"-"+u;break;case"right":l.left=i?"0":"-"+u}l[n[1]]=c,angular.element(r).css(l)}}}}}]),angular.module("ui.bootstrap.datepickerPopup",["ui.bootstrap.datepicker","ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepickerPopup/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","$datepickerPopupLiteralWarning",function(e,t,n,a,i,o,r,l,s,u,p,c,d,m,f,h){function g(t){var n=c.parse(t,k,e.date);if(isNaN(n))for(var a=0;a<U.length;a++)if(n=c.parse(t,U[a],e.date),!isNaN(n))return n;return n}function b(e){if(angular.isNumber(e)&&(e=new Date(e)),!e)return null;if(angular.isDate(e)&&!isNaN(e))return e;if(angular.isString(e)){var t=g(e);if(!isNaN(t))return c.fromTimezone(t,A.timezone)}return E.$options&&E.$options.allowInvalid?e:void 0}function v(e,t){var a=e||t;return!n.ngRequired&&!a||(angular.isNumber(a)&&(a=new Date(a)),!a||(!(!angular.isDate(a)||isNaN(a))||!!angular.isString(a)&&!isNaN(g(a))))}function $(n){if(e.isOpen||!e.disabled){var a=I[0],i=t[0].contains(n.target),o=void 0!==a.contains&&a.contains(n.target);!e.isOpen||i||o||e.$apply(function(){e.isOpen=!1})}}function y(n){27===n.which&&e.isOpen?(n.preventDefault(),n.stopPropagation(),e.$apply(function(){e.isOpen=!1}),t[0].focus()):40!==n.which||e.isOpen||(n.preventDefault(),n.stopPropagation(),e.$apply(function(){e.isOpen=!0}))}function w(){if(e.isOpen){var a=angular.element(I[0].querySelector(".uib-datepicker-popup")),i=n.popupPlacement?n.popupPlacement:d.placement,o=u.positionElements(t,a,i,x);a.css({top:o.top+"px",left:o.left+"px"}),a.hasClass("uib-position-measure")&&a.removeClass("uib-position-measure")}}var k,D,x,C,M,T,O,P,S,E,A,I,U,N=!1,F=[];this.init=function(i){if(E=i,A=angular.isObject(i.$options)?i.$options:{timezone:null},D=angular.isDefined(n.closeOnDateSelection)?e.$parent.$eval(n.closeOnDateSelection):d.closeOnDateSelection,x=angular.isDefined(n.datepickerAppendToBody)?e.$parent.$eval(n.datepickerAppendToBody):d.appendToBody,C=angular.isDefined(n.onOpenFocus)?e.$parent.$eval(n.onOpenFocus):d.onOpenFocus,M=angular.isDefined(n.datepickerPopupTemplateUrl)?n.datepickerPopupTemplateUrl:d.datepickerPopupTemplateUrl,T=angular.isDefined(n.datepickerTemplateUrl)?n.datepickerTemplateUrl:d.datepickerTemplateUrl,U=angular.isDefined(n.altInputFormats)?e.$parent.$eval(n.altInputFormats):d.altInputFormats,e.showButtonBar=angular.isDefined(n.showButtonBar)?e.$parent.$eval(n.showButtonBar):d.showButtonBar,d.html5Types[n.type]?(k=d.html5Types[n.type],N=!0):(k=n.uibDatepickerPopup||d.datepickerPopup,n.$observe("uibDatepickerPopup",function(e,t){var n=e||d.datepickerPopup;if(n!==k&&(k=n,E.$modelValue=null,!k))throw new Error("uibDatepickerPopup must have a date format specified.")})),!k)throw new Error("uibDatepickerPopup must have a date format specified.");if(N&&n.uibDatepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");O=angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"),O.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":M}),P=angular.element(O.children()[0]),P.attr("template-url",T),e.datepickerOptions||(e.datepickerOptions={}),N&&"month"===n.type&&(e.datepickerOptions.datepickerMode="month",e.datepickerOptions.minMode="month"),P.attr("datepicker-options","datepickerOptions"),N?E.$formatters.push(function(t){return e.date=c.fromTimezone(t,A.timezone),t}):(E.$$parserName="date",E.$validators.date=v,E.$parsers.unshift(b),E.$formatters.push(function(t){return E.$isEmpty(t)?(e.date=t,t):(angular.isNumber(t)&&(t=new Date(t)),e.date=c.fromTimezone(t,A.timezone),c.filter(e.date,k))})),E.$viewChangeListeners.push(function(){e.date=g(E.$viewValue)}),t.on("keydown",y),I=a(O)(e),O.remove(),x?l.find("body").append(I):t.after(I),e.$on("$destroy",function(){for(e.isOpen===!0&&(s.$$phase||e.$apply(function(){e.isOpen=!1})),I.remove(),t.off("keydown",y),l.off("click",$),S&&S.off("scroll",w),angular.element(r).off("resize",w);F.length;)F.shift()()})},e.getText=function(t){return e[t+"Text"]||d[t+"Text"]},e.isDisabled=function(t){"today"===t&&(t=c.fromTimezone(new Date,A.timezone));var n={};return angular.forEach(["minDate","maxDate"],function(t){e.datepickerOptions[t]?angular.isDate(e.datepickerOptions[t])?n[t]=new Date(e.datepickerOptions[t]):(h&&i.warn("Literal date support has been deprecated, please switch to date object usage"),n[t]=new Date(p(e.datepickerOptions[t],"medium"))):n[t]=null}),e.datepickerOptions&&n.minDate&&e.compare(t,n.minDate)<0||n.maxDate&&e.compare(t,n.maxDate)>0},e.compare=function(e,t){return new Date(e.getFullYear(),e.getMonth(),e.getDate())-new Date(t.getFullYear(),t.getMonth(),t.getDate())},e.dateSelection=function(n){e.date=n;var a=e.date?c.filter(e.date,k):null;t.val(a),E.$setViewValue(a),D&&(e.isOpen=!1,t[0].focus())},e.keydown=function(n){27===n.which&&(n.stopPropagation(),e.isOpen=!1,t[0].focus())},e.select=function(t,n){if(n.stopPropagation(),"today"===t){var a=new Date;angular.isDate(e.date)?(t=new Date(e.date),t.setFullYear(a.getFullYear(),a.getMonth(),a.getDate())):(t=c.fromTimezone(a,A.timezone),t.setHours(0,0,0,0))}e.dateSelection(t)},e.close=function(n){n.stopPropagation(),e.isOpen=!1,t[0].focus()},e.disabled=angular.isDefined(n.disabled)||!1,n.ngDisabled&&F.push(e.$parent.$watch(o(n.ngDisabled),function(t){e.disabled=t})),e.$watch("isOpen",function(a){a?e.disabled?e.isOpen=!1:m(function(){w(),C&&e.$broadcast("uib:datepicker.focus"),l.on("click",$);var a=n.popupPlacement?n.popupPlacement:d.placement;x||u.parsePlacement(a)[2]?(S=S||angular.element(u.scrollParent(t)),S&&S.on("scroll",w)):S=null,angular.element(r).on("resize",w)},0,!1):(l.off("click",$),S&&S.off("scroll",w),angular.element(r).off("resize",w))}),e.$on("uib:datepicker.mode",function(){m(w,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@"},link:function(e,t,n,a){var i=a[0],o=a[1];o.init(i)}}}).directive("uibDatepickerPopupWrap",function(){return{restrict:"A",transclude:!0,templateUrl:function(e,t){return t.templateUrl||"uib/template/datepickerPopup/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function(e){return function(t,n){var a;return function(){var i=this,o=Array.prototype.slice.call(arguments);a&&e.cancel(a),a=e(function(){t.apply(i,o)},n)}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(e,t){var n=null;this.open=function(t,i){n||e.on("click",a),n&&n!==t&&(n.isOpen=!1),n=t},this.close=function(t,i){n===t&&(e.off("click",a),e.off("keydown",this.keybindFilter),n=null)};var a=function(e){if(n&&!(e&&"disabled"===n.getAutoClose()||e&&3===e.which)){var a=n.getToggleElement();if(!(e&&a&&a[0].contains(e.target))){var i=n.getDropdownElement();e&&"outsideClick"===n.getAutoClose()&&i&&i[0].contains(e.target)||(n.focusToggleElement(),n.isOpen=!1,t.$$phase||n.$apply())}}};this.keybindFilter=function(e){if(n){var t=n.getDropdownElement(),i=n.getToggleElement(),o=t&&t[0].contains(e.target),r=i&&i[0].contains(e.target);27===e.which?(e.stopPropagation(),n.focusToggleElement(),a()):n.isKeynavEnabled()&&[38,40].indexOf(e.which)!==-1&&n.isOpen&&(o||r)&&(e.preventDefault(),e.stopPropagation(),n.focusDropdownEntry(e.which))}}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(e,t,n,a,i,o,r,l,s,u,p){var c,d,m=this,f=e.$new(),h=i.appendToOpenClass,g=i.openClass,b=angular.noop,v=n.onToggle?a(n.onToggle):angular.noop,$=!1,y=null,w=!1,k=s.find("body");t.addClass("dropdown"),this.init=function(){if(n.isOpen&&(d=a(n.isOpen),b=d.assign,e.$watch(d,function(e){f.isOpen=!!e})),angular.isDefined(n.dropdownAppendTo)){var i=a(n.dropdownAppendTo)(f);i&&(y=angular.element(i))}$=angular.isDefined(n.dropdownAppendToBody),w=angular.isDefined(n.keyboardNav),$&&!y&&(y=k),y&&m.dropdownMenu&&(y.append(m.dropdownMenu),t.on("$destroy",function(){m.dropdownMenu.remove()}))},this.toggle=function(e){return f.isOpen=arguments.length?!!e:!f.isOpen,angular.isFunction(b)&&b(f,f.isOpen),f.isOpen},this.isOpen=function(){return f.isOpen},f.getToggleElement=function(){return m.toggleElement},f.getAutoClose=function(){return n.autoClose||"always"},f.getElement=function(){return t},f.isKeynavEnabled=function(){return w},f.focusDropdownEntry=function(e){var n=m.dropdownMenu?angular.element(m.dropdownMenu).find("a"):t.find("ul").eq(0).find("a");switch(e){case 40:angular.isNumber(m.selectedOption)?m.selectedOption=m.selectedOption===n.length-1?m.selectedOption:m.selectedOption+1:m.selectedOption=0;break;case 38:angular.isNumber(m.selectedOption)?m.selectedOption=0===m.selectedOption?0:m.selectedOption-1:m.selectedOption=n.length-1}n[m.selectedOption].focus()},f.getDropdownElement=function(){return m.dropdownMenu},f.focusToggleElement=function(){m.toggleElement&&m.toggleElement[0].focus()},f.$watch("isOpen",function(n,a){if(y&&m.dropdownMenu){var i,d,w,k=l.positionElements(t,m.dropdownMenu,"bottom-left",!0),D=0;if(i={top:k.top+"px",display:n?"block":"none"},d=m.dropdownMenu.hasClass("dropdown-menu-right"),d?(i.left="auto",w=l.scrollbarPadding(y),w.heightOverflow&&w.scrollbarWidth&&(D=w.scrollbarWidth),i.right=window.innerWidth-D-(k.left+t.prop("offsetWidth"))+"px"):(i.left=k.left+"px",i.right="auto"),!$){var x=l.offset(y);i.top=k.top-x.top+"px",d?i.right=window.innerWidth-(k.left-x.left+t.prop("offsetWidth"))+"px":i.left=k.left-x.left+"px"}m.dropdownMenu.css(i)}var C=y?y:t,M=C.hasClass(y?h:g);if(M===!n&&r[n?"addClass":"removeClass"](C,y?h:g).then(function(){angular.isDefined(n)&&n!==a&&v(e,{open:!!n})}),n)m.dropdownMenuTemplateUrl?p(m.dropdownMenuTemplateUrl).then(function(e){c=f.$new(),u(e.trim())(c,function(e){var t=e;m.dropdownMenu.replaceWith(t),m.dropdownMenu=t,s.on("keydown",o.keybindFilter)})}):s.on("keydown",o.keybindFilter),f.focusToggleElement(),o.open(f,t);else{if(o.close(f,t),m.dropdownMenuTemplateUrl){c&&c.$destroy();var T=angular.element('<ul class="dropdown-menu"></ul>');m.dropdownMenu.replaceWith(T),m.dropdownMenu=T}m.selectedOption=null}angular.isFunction(b)&&b(e,n)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(e,t,n,a){a.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(e,t,n,a){if(a&&!angular.isDefined(n.dropdownNested)){t.addClass("dropdown-menu");var i=n.templateUrl;i&&(a.dropdownMenuTemplateUrl=i),a.dropdownMenu||(a.dropdownMenu=t)}}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(e,t,n,a){if(a){t.addClass("dropdown-toggle"),a.toggleElement=t;var i=function(i){i.preventDefault(),t.hasClass("disabled")||n.disabled||e.$apply(function(){a.toggle()})};t.bind("click",i),t.attr({"aria-haspopup":!0,"aria-expanded":!1}),e.$watch(a.isOpen,function(e){t.attr("aria-expanded",!!e)}),e.$on("$destroy",function(){t.unbind("click",i)})}}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var e=[];return{add:function(t,n){e.push({key:t,value:n})},get:function(t){for(var n=0;n<e.length;n++)if(t===e[n].key)return e[n]},keys:function(){for(var t=[],n=0;n<e.length;n++)t.push(e[n].key);return t},top:function(){return e[e.length-1]},remove:function(t){for(var n=-1,a=0;a<e.length;a++)if(t===e[a].key){n=a;break}return e.splice(n,1)[0]},removeTop:function(){return e.pop()},length:function(){return e.length}}}}}),angular.module("ui.bootstrap.modal",["ui.bootstrap.stackedMap","ui.bootstrap.position"]).factory("$$multiMap",function(){return{createNew:function(){var e={};return{entries:function(){return Object.keys(e).map(function(t){return{key:t,value:e[t]}})},get:function(t){return e[t]},hasKey:function(t){return!!e[t]},keys:function(){return Object.keys(e)},put:function(t,n){e[t]||(e[t]=[]),e[t].push(n)},remove:function(t,n){var a=e[t];if(a){var i=a.indexOf(n);i!==-1&&a.splice(i,1),a.length||delete e[t]}}}}}}).provider("$uibResolve",function(){var e=this;this.resolver=null,this.setResolver=function(e){this.resolver=e},this.$get=["$injector","$q",function(t,n){var a=e.resolver?t.get(e.resolver):null;return{resolve:function(e,i,o,r){if(a)return a.resolve(e,i,o,r);var l=[];return angular.forEach(e,function(e){angular.isFunction(e)||angular.isArray(e)?l.push(n.resolve(t.invoke(e))):angular.isString(e)?l.push(n.resolve(t.get(e))):l.push(n.resolve(e))}),n.all(l).then(function(t){var n={},a=0;return angular.forEach(e,function(e,i){n[i]=t[a++]}),n})}}}]}).directive("uibModalBackdrop",["$animate","$injector","$uibModalStack",function(e,t,n){function a(t,a,i){i.modalInClass&&(e.addClass(a,i.modalInClass),t.$on(n.NOW_CLOSING_EVENT,function(n,o){var r=o();t.modalOptions.animation?e.removeClass(a,i.modalInClass).then(r):r()}))}return{restrict:"A",compile:function(e,t){return e.addClass(t.backdropClass),a}}}]).directive("uibModalWindow",["$uibModalStack","$q","$animateCss","$document",function(e,t,n,a){return{scope:{index:"@"},restrict:"A",transclude:!0,templateUrl:function(e,t){return t.templateUrl||"uib/template/modal/window.html"},link:function(i,o,r){o.addClass(r.windowTopClass||""),i.size=r.size,i.close=function(t){var n=e.getTop();n&&n.value.backdrop&&"static"!==n.value.backdrop&&t.target===t.currentTarget&&(t.preventDefault(),t.stopPropagation(),e.dismiss(n.key,"backdrop click"))},o.on("click",i.close),i.$isRendered=!0;var l=t.defer();i.$$postDigest(function(){l.resolve()}),l.promise.then(function(){var l=null;r.modalInClass&&(l=n(o,{addClass:r.modalInClass}).start(),i.$on(e.NOW_CLOSING_EVENT,function(e,t){var a=t();n(o,{removeClass:r.modalInClass}).start().then(a)})),t.when(l).then(function(){var t=e.getTop();if(t&&e.modalRendered(t.key),!a[0].activeElement||!o[0].contains(a[0].activeElement)){var n=o[0].querySelector("[autofocus]");n?n.focus():o[0].focus()}})})}}}]).directive("uibModalAnimationClass",function(){return{compile:function(e,t){t.modalAnimation&&e.addClass(t.uibModalAnimationClass)}}}).directive("uibModalTransclude",["$animate",function(e){return{link:function(t,n,a,i,o){o(t.$parent,function(t){n.empty(),e.enter(t,n)})}}}]).factory("$uibModalStack",["$animate","$animateCss","$document","$compile","$rootScope","$q","$$multiMap","$$stackedMap","$uibPosition",function(e,t,n,a,i,o,r,l,s){function u(e){var t="-";return e.replace(S,function(e,n){return(n?t:"")+e.toLowerCase()})}function p(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function c(){for(var e=-1,t=D.keys(),n=0;n<t.length;n++)D.get(t[n]).value.backdrop&&(e=n);return e>-1&&e<M&&(e=M),e}function d(e,t){var n=D.get(e).value,a=n.appendTo;D.remove(e),T=D.top(),T&&(M=parseInt(T.value.modalDomEl.attr("index"),10)),h(n.modalDomEl,n.modalScope,function(){var t=n.openedClass||k;x.remove(t,e);var i=x.hasKey(t);a.toggleClass(t,i),!i&&w&&w.heightOverflow&&w.scrollbarWidth&&(w.originalRight?a.css({paddingRight:w.originalRight+"px"}):a.css({paddingRight:""}),w=null),m(!0)},n.closedDeferred),f(),t&&t.focus?t.focus():a.focus&&a.focus()}function m(e){var t;D.length()>0&&(t=D.top().value,t.modalDomEl.toggleClass(t.windowTopClass||"",e))}function f(){if($&&c()===-1){var e=y;h($,y,function(){e=null}),$=void 0,y=void 0}}function h(t,n,a,i){function r(){r.done||(r.done=!0,e.leave(t).then(function(){a&&a(),t.remove(),i&&i.resolve()}),n.$destroy())}var l,s=null,u=function(){return l||(l=o.defer(),s=l.promise),function(){l.resolve()}};return n.$broadcast(C.NOW_CLOSING_EVENT,u),o.when(s).then(r)}function g(e){if(e.isDefaultPrevented())return e;var t=D.top();if(t)switch(e.which){case 27:t.value.keyboard&&(e.preventDefault(),i.$apply(function(){C.dismiss(t.key,"escape key press")}));break;case 9:var n=C.loadFocusElementList(t),a=!1;e.shiftKey?(C.isFocusInFirstItem(e,n)||C.isModalFocused(e,t))&&(a=C.focusLastFocusableElement(n)):C.isFocusInLastItem(e,n)&&(a=C.focusFirstFocusableElement(n)),a&&(e.preventDefault(),e.stopPropagation())}}function b(e,t,n){return!e.value.modalScope.$broadcast("modal.closing",t,n).defaultPrevented}function v(){Array.prototype.forEach.call(document.querySelectorAll("["+O+"]"),function(e){var t=parseInt(e.getAttribute(O),10),n=t-1;e.setAttribute(O,n),n||(e.removeAttribute(O),e.removeAttribute("aria-hidden"))})}var $,y,w,k="modal-open",D=l.createNew(),x=r.createNew(),C={NOW_CLOSING_EVENT:"modal.stack.now-closing"},M=0,T=null,O="data-bootstrap-modal-aria-hidden-count",P="a[href], area[href], input:not([disabled]):not([tabindex='-1']), button:not([disabled]):not([tabindex='-1']),select:not([disabled]):not([tabindex='-1']), textarea:not([disabled]):not([tabindex='-1']), iframe, object, embed, *[tabindex]:not([tabindex='-1']), *[contenteditable=true]",S=/[A-Z]/g;return i.$watch(c,function(e){y&&(y.index=e)}),n.on("keydown",g),i.$on("$destroy",function(){n.off("keydown",g)}),C.open=function(t,o){function r(e){function t(e){var t=e.parent()?e.parent().children():[];return Array.prototype.filter.call(t,function(t){return t!==e[0]})}if(e&&"BODY"!==e[0].tagName)return t(e).forEach(function(e){var t="true"===e.getAttribute("aria-hidden"),n=parseInt(e.getAttribute(O),10);n||(n=t?1:0),e.setAttribute(O,n+1),e.setAttribute("aria-hidden","true")}),r(e.parent())}var l=n[0].activeElement,p=o.openedClass||k;m(!1),T=D.top(),D.add(t,{deferred:o.deferred,renderDeferred:o.renderDeferred,closedDeferred:o.closedDeferred,modalScope:o.scope,backdrop:o.backdrop,keyboard:o.keyboard,openedClass:o.openedClass,windowTopClass:o.windowTopClass,animation:o.animation,appendTo:o.appendTo}),x.put(p,t);var d=o.appendTo,f=c();if(!d.length)throw new Error("appendTo element not found. Make sure that the element passed is in DOM.");f>=0&&!$&&(y=i.$new(!0),y.modalOptions=o,y.index=f,$=angular.element('<div uib-modal-backdrop="modal-backdrop"></div>'),$.attr({"class":"modal-backdrop","ng-style":"{'z-index': 1040 + (index && 1 || 0) + index*10}","uib-modal-animation-class":"fade","modal-in-class":"in"}),o.backdropClass&&$.addClass(o.backdropClass),o.animation&&$.attr("modal-animation","true"),a($)(y),e.enter($,d),s.isScrollable(d)&&(w=s.scrollbarPadding(d),w.heightOverflow&&w.scrollbarWidth&&d.css({paddingRight:w.right+"px"})));var h;o.component?(h=document.createElement(u(o.component.name)),h=angular.element(h),h.attr({resolve:"$resolve","modal-instance":"$uibModalInstance",close:"$close($value)",dismiss:"$dismiss($value)"})):h=o.content,M=T?parseInt(T.value.modalDomEl.attr("index"),10)+1:0;var g=angular.element('<div uib-modal-window="modal-window"></div>');g.attr({"class":"modal","template-url":o.windowTemplateUrl,"window-top-class":o.windowTopClass,role:"dialog","aria-labelledby":o.ariaLabelledBy,"aria-describedby":o.ariaDescribedBy,size:o.size,index:M,animate:"animate","ng-style":"{'z-index': 1050 + $$topModalIndex*10, display: 'block'}",tabindex:-1,"uib-modal-animation-class":"fade","modal-in-class":"in"}).append(h),o.windowClass&&g.addClass(o.windowClass),o.animation&&g.attr("modal-animation","true"),d.addClass(p),o.scope&&(o.scope.$$topModalIndex=M),e.enter(a(g)(o.scope),d),D.top().value.modalDomEl=g,D.top().value.modalOpener=l,r(g)},C.close=function(e,t){var n=D.get(e);return v(),n&&b(n,t,!0)?(n.value.modalScope.$$uibDestructionScheduled=!0,n.value.deferred.resolve(t),d(e,n.value.modalOpener),!0):!n},C.dismiss=function(e,t){var n=D.get(e);return v(),n&&b(n,t,!1)?(n.value.modalScope.$$uibDestructionScheduled=!0,n.value.deferred.reject(t),d(e,n.value.modalOpener),!0):!n},C.dismissAll=function(e){for(var t=this.getTop();t&&this.dismiss(t.key,e);)t=this.getTop()},C.getTop=function(){return D.top()},C.modalRendered=function(e){var t=D.get(e);C.focusFirstFocusableElement(C.loadFocusElementList(t)),t&&t.value.renderDeferred.resolve()},C.focusFirstFocusableElement=function(e){return e.length>0&&(e[0].focus(),!0)},C.focusLastFocusableElement=function(e){return e.length>0&&(e[e.length-1].focus(),!0)},C.isModalFocused=function(e,t){if(e&&t){var n=t.value.modalDomEl;if(n&&n.length)return(e.target||e.srcElement)===n[0]}return!1},C.isFocusInFirstItem=function(e,t){return t.length>0&&(e.target||e.srcElement)===t[0]},C.isFocusInLastItem=function(e,t){return t.length>0&&(e.target||e.srcElement)===t[t.length-1]},C.loadFocusElementList=function(e){if(e){var t=e.value.modalDomEl;if(t&&t.length){var n=t[0].querySelectorAll(P);return n?Array.prototype.filter.call(n,function(e){return p(e)}):n}}},C}]).provider("$uibModal",function(){var e={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$rootScope","$q","$document","$templateRequest","$controller","$uibResolve","$uibModalStack",function(t,n,a,i,o,r,l){function s(e){return e.template?n.when(e.template):i(angular.isFunction(e.templateUrl)?e.templateUrl():e.templateUrl)}var u={},p=null;return u.getPromiseChain=function(){return p},u.open=function(i){function u(){return g}var c=n.defer(),d=n.defer(),m=n.defer(),f=n.defer(),h={result:c.promise,opened:d.promise,closed:m.promise,rendered:f.promise,close:function(e){return l.close(h,e)},dismiss:function(e){return l.dismiss(h,e)}};if(i=angular.extend({},e.options,i),i.resolve=i.resolve||{},i.appendTo=i.appendTo||a.find("body").eq(0),!i.component&&!i.template&&!i.templateUrl)throw new Error("One of component or template or templateUrl options is required.");var g;g=i.component?n.when(r.resolve(i.resolve,{},null,null)):n.all([s(i),r.resolve(i.resolve,{},null,null)]);var b;return b=p=n.all([p]).then(u,u).then(function(e){function n(t,n,a,i){t.$scope=r,t.$scope.$resolve={},a?t.$scope.$uibModalInstance=h:t.$uibModalInstance=h;var o=n?e[1]:e;angular.forEach(o,function(e,n){i&&(t[n]=e),t.$scope.$resolve[n]=e})}var a=i.scope||t,r=a.$new();r.$close=h.close,r.$dismiss=h.dismiss,r.$on("$destroy",function(){r.$$uibDestructionScheduled||r.$dismiss("$uibUnscheduledDestruction")});var s,u,p={scope:r,deferred:c,renderDeferred:f,closedDeferred:m,animation:i.animation,backdrop:i.backdrop,keyboard:i.keyboard,backdropClass:i.backdropClass,windowTopClass:i.windowTopClass,windowClass:i.windowClass,windowTemplateUrl:i.windowTemplateUrl,ariaLabelledBy:i.ariaLabelledBy,ariaDescribedBy:i.ariaDescribedBy,size:i.size,openedClass:i.openedClass,appendTo:i.appendTo},g={},b={};i.component?(n(g,!1,!0,!1),g.name=i.component,p.component=g):i.controller&&(n(b,!0,!1,!0),u=o(i.controller,b,!0,i.controllerAs),i.controllerAs&&i.bindToController&&(s=u.instance,s.$close=r.$close,s.$dismiss=r.$dismiss,angular.extend(s,{$resolve:b.$scope.$resolve},a)),s=u(),angular.isFunction(s.$onInit)&&s.$onInit()),i.component||(p.content=e[0]),l.open(h,p),d.resolve(!0)},function(e){d.reject(e),c.reject(e)})["finally"](function(){p===b&&(p=null)}),h},u}]};return e}),angular.module("ui.bootstrap.paging",[]).factory("uibPaging",["$parse",function(e){return{create:function(t,n,a){t.setNumPages=a.numPages?e(a.numPages).assign:angular.noop,t.ngModelCtrl={$setViewValue:angular.noop},t._watchers=[],t.init=function(e,i){t.ngModelCtrl=e,t.config=i,e.$render=function(){t.render()},a.itemsPerPage?t._watchers.push(n.$parent.$watch(a.itemsPerPage,function(e){t.itemsPerPage=parseInt(e,10),n.totalPages=t.calculateTotalPages(),t.updatePage()})):t.itemsPerPage=i.itemsPerPage,n.$watch("totalItems",function(e,a){(angular.isDefined(e)||e!==a)&&(n.totalPages=t.calculateTotalPages(),t.updatePage())})},t.calculateTotalPages=function(){var e=t.itemsPerPage<1?1:Math.ceil(n.totalItems/t.itemsPerPage);return Math.max(e||0,1)},t.render=function(){n.page=parseInt(t.ngModelCtrl.$viewValue,10)||1},n.selectPage=function(e,a){a&&a.preventDefault();var i=!n.ngDisabled||!a;i&&n.page!==e&&e>0&&e<=n.totalPages&&(a&&a.target&&a.target.blur(),t.ngModelCtrl.$setViewValue(e),t.ngModelCtrl.$render())},n.getText=function(e){return n[e+"Text"]||t.config[e+"Text"]},n.noPrevious=function(){return 1===n.page},n.noNext=function(){return n.page===n.totalPages},t.updatePage=function(){t.setNumPages(n.$parent,n.totalPages),n.page>n.totalPages?n.selectPage(n.totalPages):t.ngModelCtrl.$render()},n.$on("$destroy",function(){for(;t._watchers.length;)t._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function(e,t,n,a){e.align=angular.isDefined(t.align)?e.$parent.$eval(t.align):a.align,n.create(this,e,t)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(e){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],restrict:"A",controller:"UibPagerController",controllerAs:"pager",templateUrl:function(e,t){return t.templateUrl||"uib/template/pager/pager.html";
 },link:function(t,n,a,i){n.addClass("pager");var o=i[0],r=i[1];r&&o.init(r,e)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function(e,t,n,a,i){function o(e,t,n){return{number:e,text:t,active:n}}function r(e,t){var n=[],a=1,i=t,r=angular.isDefined(s)&&s<t;r&&(u?(a=Math.max(e-Math.floor(s/2),1),i=a+s-1,i>t&&(i=t,a=i-s+1)):(a=(Math.ceil(e/s)-1)*s+1,i=Math.min(a+s-1,t)));for(var l=a;l<=i;l++){var m=o(l,d(l),l===e);n.push(m)}if(r&&s>0&&(!u||p||c)){if(a>1){if(!c||a>3){var f=o(a-1,"...",!1);n.unshift(f)}if(c){if(3===a){var h=o(2,"2",!1);n.unshift(h)}var g=o(1,"1",!1);n.unshift(g)}}if(i<t){if(!c||i<t-2){var b=o(i+1,"...",!1);n.push(b)}if(c){if(i===t-2){var v=o(t-1,t-1,!1);n.push(v)}var $=o(t,t,!1);n.push($)}}}return n}var l=this,s=angular.isDefined(t.maxSize)?e.$parent.$eval(t.maxSize):i.maxSize,u=angular.isDefined(t.rotate)?e.$parent.$eval(t.rotate):i.rotate,p=angular.isDefined(t.forceEllipses)?e.$parent.$eval(t.forceEllipses):i.forceEllipses,c=angular.isDefined(t.boundaryLinkNumbers)?e.$parent.$eval(t.boundaryLinkNumbers):i.boundaryLinkNumbers,d=angular.isDefined(t.pageLabel)?function(n){return e.$parent.$eval(t.pageLabel,{$page:n})}:angular.identity;e.boundaryLinks=angular.isDefined(t.boundaryLinks)?e.$parent.$eval(t.boundaryLinks):i.boundaryLinks,e.directionLinks=angular.isDefined(t.directionLinks)?e.$parent.$eval(t.directionLinks):i.directionLinks,a.create(this,e,t),t.maxSize&&l._watchers.push(e.$parent.$watch(n(t.maxSize),function(e){s=parseInt(e,10),l.render()}));var m=this.render;this.render=function(){m(),e.page>0&&e.page<=e.totalPages&&(e.pages=r(e.page,e.totalPages))}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,boundaryLinkNumbers:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0,forceEllipses:!1}).directive("uibPagination",["$parse","uibPaginationConfig",function(e,t){return{scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],restrict:"A",controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(e,t){return t.templateUrl||"uib/template/pagination/pagination.html"},link:function(e,n,a,i){n.addClass("pagination");var o=i[0],r=i[1];r&&o.init(r,t)}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function e(e){var t=/[A-Z]/g,n="-";return e.replace(t,function(e,t){return(t?n:"")+e.toLowerCase()})}var t={placement:"top",placementClassPrefix:"",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},n={mouseenter:"mouseleave",click:"click",outsideClick:"outsideClick",focus:"blur",none:""},a={};this.options=function(e){angular.extend(a,e)},this.setTriggers=function(e){angular.extend(n,e)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(i,o,r,l,s,u,p,c,d){function m(e){if(27===e.which){var t=f.top();t&&(t.value.close(),t=null)}}var f=d.createNew();return l.on("keyup",m),p.$on("$destroy",function(){l.off("keyup",m)}),function(i,p,d,m){function h(e){var t=(e||m.trigger||d).split(" "),a=t.map(function(e){return n[e]||e});return{show:t,hide:a}}m=angular.extend({},t,a,m);var g=e(i),b=u.startSymbol(),v=u.endSymbol(),$="<div "+g+'-popup uib-title="'+b+"title"+v+'" '+(m.useContentExp?'content-exp="contentExp()" ':'content="'+b+"content"+v+'" ')+'origin-scope="origScope" class="uib-position-measure '+p+'" tooltip-animation-class="fade"uib-tooltip-classes ng-class="{ in: isOpen }" ></div>';return{compile:function(e,t){var n=o($);return function(e,t,a,o){function u(){q.isOpen?g():d()}function d(){R&&!e.$eval(a[p+"Enable"])||(y(),D(),q.popupDelay?A||(A=r(b,q.popupDelay,!1)):b())}function g(){v(),q.popupCloseDelay?I||(I=r($,q.popupCloseDelay,!1)):$()}function b(){return v(),y(),q.content?(w(),void q.$evalAsync(function(){q.isOpen=!0,x(!0),W()})):angular.noop}function v(){A&&(r.cancel(A),A=null),U&&(r.cancel(U),U=null)}function $(){q&&q.$evalAsync(function(){q&&(q.isOpen=!1,x(!1),q.animation?E||(E=r(k,150,!1)):k())})}function y(){I&&(r.cancel(I),I=null),E&&(r.cancel(E),E=null)}function w(){P||(S=q.$new(),P=n(S,function(e){H?l.find("body").append(e):t.after(e)}),f.add(q,{close:$}),C())}function k(){v(),y(),M(),P&&(P.remove(),P=null,N&&r.cancel(N)),f.remove(q),S&&(S.$destroy(),S=null)}function D(){q.title=a[p+"Title"],z?q.content=z(e):q.content=a[i],q.popupClass=a[p+"Class"],q.placement=angular.isDefined(a[p+"Placement"])?a[p+"Placement"]:m.placement;var t=s.parsePlacement(q.placement);F=t[1]?t[0]+"-"+t[1]:t[0];var n=parseInt(a[p+"PopupDelay"],10),o=parseInt(a[p+"PopupCloseDelay"],10);q.popupDelay=isNaN(n)?m.popupDelay:n,q.popupCloseDelay=isNaN(o)?m.popupCloseDelay:o}function x(t){Y&&angular.isFunction(Y.assign)&&Y.assign(e,t)}function C(){B.length=0,z?(B.push(e.$watch(z,function(e){q.content=e,!e&&q.isOpen&&$()})),B.push(S.$watch(function(){L||(L=!0,S.$$postDigest(function(){L=!1,q&&q.isOpen&&W()}))}))):B.push(a.$observe(i,function(e){q.content=e,!e&&q.isOpen?$():W()})),B.push(a.$observe(p+"Title",function(e){q.title=e,q.isOpen&&W()})),B.push(a.$observe(p+"Placement",function(e){q.placement=e?e:m.placement,q.isOpen&&W()}))}function M(){B.length&&(angular.forEach(B,function(e){e()}),B.length=0)}function T(e){q&&q.isOpen&&P&&(t[0].contains(e.target)||P[0].contains(e.target)||g())}function O(){var n=[],i=[],o=e.$eval(a[p+"Trigger"]);j(),angular.isObject(o)?(Object.keys(o).forEach(function(e){n.push(e),i.push(o[e])}),V={show:n,hide:i}):V=h(o),"none"!==V.show&&V.show.forEach(function(e,n){"outsideClick"===e?(t.on("click",u),l.on("click",T)):e===V.hide[n]?t.on(e,u):e&&(t.on(e,d),t.on(V.hide[n],g)),t.on("keypress",function(e){27===e.which&&g()})})}var P,S,E,A,I,U,N,F,H=!!angular.isDefined(m.appendToBody)&&m.appendToBody,V=h(void 0),R=angular.isDefined(a[p+"Enable"]),q=e.$new(!0),L=!1,Y=!!angular.isDefined(a[p+"IsOpen"])&&c(a[p+"IsOpen"]),z=!!m.useContentExp&&c(a[i]),B=[],W=function(){P&&P.html()&&(U||(U=r(function(){var e=s.positionElements(t,P,q.placement,H),n=angular.isDefined(P.offsetHeight)?P.offsetHeight:P.prop("offsetHeight"),a=H?s.offset(t):s.position(t);P.css({top:e.top+"px",left:e.left+"px"});var i=e.placement.split("-");P.hasClass(i[0])||(P.removeClass(F.split("-")[0]),P.addClass(i[0])),P.hasClass(m.placementClassPrefix+e.placement)||(P.removeClass(m.placementClassPrefix+F),P.addClass(m.placementClassPrefix+e.placement)),N=r(function(){var e=angular.isDefined(P.offsetHeight)?P.offsetHeight:P.prop("offsetHeight"),t=s.adjustTop(i,a,n,e);t&&P.css(t),N=null},0,!1),P.hasClass("uib-position-measure")?(s.positionArrow(P,e.placement),P.removeClass("uib-position-measure")):F!==e.placement&&s.positionArrow(P,e.placement),F=e.placement,U=null},0,!1)))};q.origScope=e,q.isOpen=!1,q.contentExp=function(){return q.content},a.$observe("disabled",function(e){e&&v(),e&&q.isOpen&&$()}),Y&&e.$watch(Y,function(e){q&&!e===q.isOpen&&u()});var j=function(){V.show.forEach(function(e){"outsideClick"===e?t.off("click",u):(t.off(e,d),t.off(e,u))}),V.hide.forEach(function(e){"outsideClick"===e?l.off("click",T):t.off(e,g)})};O();var _=e.$eval(a[p+"Animation"]);q.animation=angular.isDefined(_)?!!_:m.animation;var G,K=p+"AppendToBody";G=K in a&&void 0===a[K]||e.$eval(a[K]),H=angular.isDefined(G)?G:H,e.$on("$destroy",function(){j(),k(),q=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(e,t,n,a){return{link:function(i,o,r){var l,s,u,p=i.$eval(r.tooltipTemplateTranscludeScope),c=0,d=function(){s&&(s.remove(),s=null),l&&(l.$destroy(),l=null),u&&(e.leave(u).then(function(){s=null}),s=u,u=null)};i.$watch(t.parseAsResourceUrl(r.uibTooltipTemplateTransclude),function(t){var r=++c;t?(a(t,!0).then(function(a){if(r===c){var i=p.$new(),s=a,m=n(s)(i,function(t){d(),e.enter(t,o)});l=i,u=m,l.$emit("$includeContentLoaded",t)}},function(){r===c&&(d(),i.$emit("$includeContentError",t))}),i.$emit("$includeContentRequested",t)):d()}),i.$on("$destroy",d)}}}]).directive("uibTooltipClasses",["$uibPosition",function(e){return{restrict:"A",link:function(t,n,a){if(t.placement){var i=e.parsePlacement(t.placement);n.addClass(i[0])}t.popupClass&&n.addClass(t.popupClass),t.animation&&n.addClass(a.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{restrict:"A",scope:{content:"@"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function(e){return e("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{restrict:"A",scope:{contentExp:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function(e){return e("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function(e){return e("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{restrict:"A",scope:{uibTitle:"@",contentExp:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function(e){return e("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&",uibTitle:"@"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function(e){return e("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{restrict:"A",scope:{uibTitle:"@",content:"@"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function(e){return e("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(e,t,n){function a(){return angular.isDefined(e.maxParam)?e.maxParam:n.max}var i=this,o=angular.isDefined(t.animate)?e.$parent.$eval(t.animate):n.animate;this.bars=[],e.max=a(),this.addBar=function(e,t,n){o||t.css({transition:"none"}),this.bars.push(e),e.max=a(),e.title=n&&angular.isDefined(n.title)?n.title:"progressbar",e.$watch("value",function(t){e.recalculatePercentage()}),e.recalculatePercentage=function(){var t=i.bars.reduce(function(e,t){return t.percent=+(100*t.value/t.max).toFixed(2),e+t.percent},0);t>100&&(e.percent-=t-100)},e.$on("$destroy",function(){t=null,i.removeBar(e)})},this.removeBar=function(e){this.bars.splice(this.bars.indexOf(e),1),this.bars.forEach(function(e){e.recalculatePercentage()})},e.$watch("maxParam",function(e){i.bars.forEach(function(e){e.max=a(),e.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{maxParam:"=?max"},templateUrl:"uib/template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"uib/template/progressbar/bar.html",link:function(e,t,n,a){a.addBar(e,t,n)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",maxParam:"=?max",type:"@"},templateUrl:"uib/template/progressbar/progressbar.html",link:function(e,t,n,a){a.addBar(e,angular.element(t.children()[0]),{title:n.title})}}}),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,enableReset:!0,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(e,t,n){var a={$setViewValue:angular.noop},i=this;this.init=function(i){a=i,a.$render=this.render,a.$formatters.push(function(e){return angular.isNumber(e)&&e<<0!==e&&(e=Math.round(e)),e}),this.stateOn=angular.isDefined(t.stateOn)?e.$parent.$eval(t.stateOn):n.stateOn,this.stateOff=angular.isDefined(t.stateOff)?e.$parent.$eval(t.stateOff):n.stateOff,this.enableReset=angular.isDefined(t.enableReset)?e.$parent.$eval(t.enableReset):n.enableReset;var o=angular.isDefined(t.titles)?e.$parent.$eval(t.titles):n.titles;this.titles=angular.isArray(o)&&o.length>0?o:n.titles;var r=angular.isDefined(t.ratingStates)?e.$parent.$eval(t.ratingStates):new Array(angular.isDefined(t.max)?e.$parent.$eval(t.max):n.max);e.range=this.buildTemplateObjects(r)},this.buildTemplateObjects=function(e){for(var t=0,n=e.length;t<n;t++)e[t]=angular.extend({index:t},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(t)},e[t]);return e},this.getTitle=function(e){return e>=this.titles.length?e+1:this.titles[e]},e.rate=function(t){if(!e.readonly&&t>=0&&t<=e.range.length){var n=i.enableReset&&a.$viewValue===t?0:t;a.$setViewValue(n),a.$render()}},e.enter=function(t){e.readonly||(e.value=t),e.onHover({value:t})},e.reset=function(){e.value=a.$viewValue,e.onLeave()},e.onKeydown=function(t){/(37|38|39|40)/.test(t.which)&&(t.preventDefault(),t.stopPropagation(),e.rate(e.value+(38===t.which||39===t.which?1:-1)))},this.render=function(){e.value=a.$viewValue,e.title=i.getTitle(e.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],restrict:"A",scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",link:function(e,t,n,a){var i=a[0],o=a[1];i.init(o)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(e){function t(e){for(var t=0;t<a.tabs.length;t++)if(a.tabs[t].index===e)return t}var n,a=this;a.tabs=[],a.select=function(e,o){if(!i){var r=t(n),l=a.tabs[r];if(l){if(l.tab.onDeselect({$event:o,$selectedIndex:e}),o&&o.isDefaultPrevented())return;l.tab.active=!1}var s=a.tabs[e];s?(s.tab.onSelect({$event:o}),s.tab.active=!0,a.active=s.index,n=s.index):!s&&angular.isDefined(n)&&(a.active=null,n=null)}},a.addTab=function(e){if(a.tabs.push({tab:e,index:e.index}),a.tabs.sort(function(e,t){return e.index>t.index?1:e.index<t.index?-1:0}),e.index===a.active||!angular.isDefined(a.active)&&1===a.tabs.length){var n=t(e.index);a.select(n)}},a.removeTab=function(e){for(var t,n=0;n<a.tabs.length;n++)if(a.tabs[n].tab===e){t=n;break}if(a.tabs[t].index===a.active){var i=t===a.tabs.length-1?t-1:t+1%a.tabs.length;a.select(i)}a.tabs.splice(t,1)},e.$watch("tabset.active",function(e){angular.isDefined(e)&&e!==n&&a.select(t(e))});var i;e.$on("$destroy",function(){i=!0})}]).directive("uibTabset",function(){return{transclude:!0,replace:!0,scope:{},bindToController:{active:"=?",type:"@"},controller:"UibTabsetController",controllerAs:"tabset",templateUrl:function(e,t){return t.templateUrl||"uib/template/tabs/tabset.html"},link:function(e,t,n){e.vertical=!!angular.isDefined(n.vertical)&&e.$parent.$eval(n.vertical),e.justified=!!angular.isDefined(n.justified)&&e.$parent.$eval(n.justified)}}}).directive("uibTab",["$parse",function(e){return{require:"^uibTabset",replace:!0,templateUrl:function(e,t){return t.templateUrl||"uib/template/tabs/tab.html"},transclude:!0,scope:{heading:"@",index:"=?",classes:"@?",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},controllerAs:"tab",link:function(t,n,a,i,o){t.disabled=!1,a.disable&&t.$parent.$watch(e(a.disable),function(e){t.disabled=!!e}),angular.isUndefined(a.index)&&(i.tabs&&i.tabs.length?t.index=Math.max.apply(null,i.tabs.map(function(e){return e.index}))+1:t.index=0),angular.isUndefined(a.classes)&&(t.classes=""),t.select=function(e){if(!t.disabled){for(var n,a=0;a<i.tabs.length;a++)if(i.tabs[a].tab===t){n=a;break}i.select(n,e)}},i.addTab(t),t.$on("$destroy",function(){i.removeTab(t)}),t.$transcludeFn=o}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:"^uibTab",link:function(e,t){e.$watch("headingElement",function(e){e&&(t.html(""),t.append(e))})}}}).directive("uibTabContentTransclude",function(){function e(e){return e.tagName&&(e.hasAttribute("uib-tab-heading")||e.hasAttribute("data-uib-tab-heading")||e.hasAttribute("x-uib-tab-heading")||"uib-tab-heading"===e.tagName.toLowerCase()||"data-uib-tab-heading"===e.tagName.toLowerCase()||"x-uib-tab-heading"===e.tagName.toLowerCase()||"uib:tab-heading"===e.tagName.toLowerCase())}return{restrict:"A",require:"^uibTabset",link:function(t,n,a){var i=t.$eval(a.uibTabContentTransclude).tab;i.$transcludeFn(i.$parent,function(t){angular.forEach(t,function(t){e(t)?i.headingElement=t:n.append(t)})})}}}),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,secondStep:1,showMeridian:!0,showSeconds:!1,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0,templateUrl:"uib/template/timepicker/timepicker.html"}).controller("UibTimepickerController",["$scope","$element","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(e,t,n,a,i,o,r){function l(){var t=+e.hours,n=e.showMeridian?t>0&&t<13:t>=0&&t<24;if(n&&""!==e.hours)return e.showMeridian&&(12===t&&(t=0),e.meridian===x[1]&&(t+=12)),t}function s(){var t=+e.minutes,n=t>=0&&t<60;if(n&&""!==e.minutes)return t}function u(){var t=+e.seconds;return t>=0&&t<60?t:void 0}function p(e,t){return null===e?"":angular.isDefined(e)&&e.toString().length<2&&!t?"0"+e:e.toString()}function c(e){d(),D.$setViewValue(new Date(w)),m(e)}function d(){v&&v.$setValidity("hours",!0),$&&$.$setValidity("minutes",!0),y&&y.$setValidity("seconds",!0),D.$setValidity("time",!0),e.invalidHours=!1,e.invalidMinutes=!1,e.invalidSeconds=!1}function m(t){if(D.$modelValue){var n=w.getHours(),a=w.getMinutes(),i=w.getSeconds();e.showMeridian&&(n=0===n||12===n?12:n%12),e.hours="h"===t?n:p(n,!C),"m"!==t&&(e.minutes=p(a)),e.meridian=w.getHours()<12?x[0]:x[1],"s"!==t&&(e.seconds=p(i)),e.meridian=w.getHours()<12?x[0]:x[1]}else e.hours=null,e.minutes=null,e.seconds=null,e.meridian=x[0]}function f(e){w=g(w,e),c()}function h(e,t){return g(e,60*t)}function g(e,t){var n=new Date(e.getTime()+1e3*t),a=new Date(e);return a.setHours(n.getHours(),n.getMinutes(),n.getSeconds()),a}function b(){return(null===e.hours||""===e.hours)&&(null===e.minutes||""===e.minutes)&&(!e.showSeconds||e.showSeconds&&(null===e.seconds||""===e.seconds))}var v,$,y,w=new Date,k=[],D={$setViewValue:angular.noop},x=angular.isDefined(n.meridians)?e.$parent.$eval(n.meridians):r.meridians||o.DATETIME_FORMATS.AMPMS,C=!angular.isDefined(n.padHours)||e.$parent.$eval(n.padHours);e.tabindex=angular.isDefined(n.tabindex)?n.tabindex:0,t.removeAttr("tabindex"),this.init=function(t,a){D=t,D.$render=this.render,D.$formatters.unshift(function(e){return e?new Date(e):null});var i=a.eq(0),o=a.eq(1),l=a.eq(2);v=i.controller("ngModel"),$=o.controller("ngModel"),y=l.controller("ngModel");var s=angular.isDefined(n.mousewheel)?e.$parent.$eval(n.mousewheel):r.mousewheel;s&&this.setupMousewheelEvents(i,o,l);var u=angular.isDefined(n.arrowkeys)?e.$parent.$eval(n.arrowkeys):r.arrowkeys;u&&this.setupArrowkeyEvents(i,o,l),e.readonlyInput=angular.isDefined(n.readonlyInput)?e.$parent.$eval(n.readonlyInput):r.readonlyInput,this.setupInputEvents(i,o,l)};var M=r.hourStep;n.hourStep&&k.push(e.$parent.$watch(a(n.hourStep),function(e){M=+e}));var T=r.minuteStep;n.minuteStep&&k.push(e.$parent.$watch(a(n.minuteStep),function(e){T=+e}));var O;k.push(e.$parent.$watch(a(n.min),function(e){var t=new Date(e);O=isNaN(t)?void 0:t}));var P;k.push(e.$parent.$watch(a(n.max),function(e){var t=new Date(e);P=isNaN(t)?void 0:t}));var S=!1;n.ngDisabled&&k.push(e.$parent.$watch(a(n.ngDisabled),function(e){S=e})),e.noIncrementHours=function(){var e=h(w,60*M);return S||e>P||e<w&&e<O},e.noDecrementHours=function(){var e=h(w,60*-M);return S||e<O||e>w&&e>P},e.noIncrementMinutes=function(){var e=h(w,T);return S||e>P||e<w&&e<O},e.noDecrementMinutes=function(){var e=h(w,-T);return S||e<O||e>w&&e>P},e.noIncrementSeconds=function(){var e=g(w,E);return S||e>P||e<w&&e<O},e.noDecrementSeconds=function(){var e=g(w,-E);return S||e<O||e>w&&e>P},e.noToggleMeridian=function(){return w.getHours()<12?S||h(w,720)>P:S||h(w,-720)<O};var E=r.secondStep;n.secondStep&&k.push(e.$parent.$watch(a(n.secondStep),function(e){E=+e})),e.showSeconds=r.showSeconds,n.showSeconds&&k.push(e.$parent.$watch(a(n.showSeconds),function(t){e.showSeconds=!!t})),e.showMeridian=r.showMeridian,n.showMeridian&&k.push(e.$parent.$watch(a(n.showMeridian),function(t){if(e.showMeridian=!!t,D.$error.time){var n=l(),a=s();angular.isDefined(n)&&angular.isDefined(a)&&(w.setHours(n),c())}else m()})),this.setupMousewheelEvents=function(t,n,a){var i=function(e){e.originalEvent&&(e=e.originalEvent);var t=e.wheelDelta?e.wheelDelta:-e.deltaY;return e.detail||t>0};t.bind("mousewheel wheel",function(t){S||e.$apply(i(t)?e.incrementHours():e.decrementHours()),t.preventDefault()}),n.bind("mousewheel wheel",function(t){S||e.$apply(i(t)?e.incrementMinutes():e.decrementMinutes()),t.preventDefault()}),a.bind("mousewheel wheel",function(t){S||e.$apply(i(t)?e.incrementSeconds():e.decrementSeconds()),t.preventDefault()})},this.setupArrowkeyEvents=function(t,n,a){t.bind("keydown",function(t){S||(38===t.which?(t.preventDefault(),e.incrementHours(),e.$apply()):40===t.which&&(t.preventDefault(),e.decrementHours(),e.$apply()))}),n.bind("keydown",function(t){S||(38===t.which?(t.preventDefault(),e.incrementMinutes(),e.$apply()):40===t.which&&(t.preventDefault(),e.decrementMinutes(),e.$apply()))}),a.bind("keydown",function(t){S||(38===t.which?(t.preventDefault(),e.incrementSeconds(),e.$apply()):40===t.which&&(t.preventDefault(),e.decrementSeconds(),e.$apply()))})},this.setupInputEvents=function(t,n,a){if(e.readonlyInput)return e.updateHours=angular.noop,e.updateMinutes=angular.noop,void(e.updateSeconds=angular.noop);var i=function(t,n,a){D.$setViewValue(null),D.$setValidity("time",!1),angular.isDefined(t)&&(e.invalidHours=t,v&&v.$setValidity("hours",!1)),angular.isDefined(n)&&(e.invalidMinutes=n,$&&$.$setValidity("minutes",!1)),angular.isDefined(a)&&(e.invalidSeconds=a,y&&y.$setValidity("seconds",!1))};e.updateHours=function(){var e=l(),t=s();D.$setDirty(),angular.isDefined(e)&&angular.isDefined(t)?(w.setHours(e),w.setMinutes(t),w<O||w>P?i(!0):c("h")):i(!0)},t.bind("blur",function(t){D.$setTouched(),b()?d():null===e.hours||""===e.hours?i(!0):!e.invalidHours&&e.hours<10&&e.$apply(function(){e.hours=p(e.hours,!C)})}),e.updateMinutes=function(){var e=s(),t=l();D.$setDirty(),angular.isDefined(e)&&angular.isDefined(t)?(w.setHours(t),w.setMinutes(e),w<O||w>P?i(void 0,!0):c("m")):i(void 0,!0)},n.bind("blur",function(t){D.$setTouched(),b()?d():null===e.minutes?i(void 0,!0):!e.invalidMinutes&&e.minutes<10&&e.$apply(function(){e.minutes=p(e.minutes)})}),e.updateSeconds=function(){var e=u();D.$setDirty(),angular.isDefined(e)?(w.setSeconds(e),c("s")):i(void 0,void 0,!0)},a.bind("blur",function(t){b()?d():!e.invalidSeconds&&e.seconds<10&&e.$apply(function(){e.seconds=p(e.seconds)})})},this.render=function(){var t=D.$viewValue;isNaN(t)?(D.$setValidity("time",!1),i.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(t&&(w=t),w<O||w>P?(D.$setValidity("time",!1),e.invalidHours=!0,e.invalidMinutes=!0):d(),m())},e.showSpinners=angular.isDefined(n.showSpinners)?e.$parent.$eval(n.showSpinners):r.showSpinners,e.incrementHours=function(){e.noIncrementHours()||f(60*M*60)},e.decrementHours=function(){e.noDecrementHours()||f(60*-M*60)},e.incrementMinutes=function(){e.noIncrementMinutes()||f(60*T)},e.decrementMinutes=function(){e.noDecrementMinutes()||f(60*-T)},e.incrementSeconds=function(){e.noIncrementSeconds()||f(E)},e.decrementSeconds=function(){e.noDecrementSeconds()||f(-E)},e.toggleMeridian=function(){var t=s(),n=l();e.noToggleMeridian()||(angular.isDefined(t)&&angular.isDefined(n)?f(720*(w.getHours()<12?60:-60)):e.meridian=e.meridian===x[0]?x[1]:x[0])},e.blur=function(){D.$setTouched()},e.$on("$destroy",function(){for(;k.length;)k.shift()()})}]).directive("uibTimepicker",["uibTimepickerConfig",function(e){return{require:["uibTimepicker","?^ngModel"],restrict:"A",controller:"UibTimepickerController",controllerAs:"timepicker",scope:{},templateUrl:function(t,n){return n.templateUrl||e.templateUrl},link:function(e,t,n,a){var i=a[0],o=a[1];o&&i.init(o,t.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.debounce","ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(e){var t=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(n){var a=n.match(t);if(!a)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+n+'".');return{itemName:a[3],source:e(a[4]),viewMapper:e(a[2]||a[1]),modelMapper:e(a[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$$debounce","$uibPosition","uibTypeaheadParser",function(e,t,n,a,i,o,r,l,s,u,p,c,d){function m(){q.moveInProgress||(q.moveInProgress=!0,q.$digest()),Z()}function f(){q.position=S?c.offset(t):c.position(t),q.position.top+=t.prop("offsetHeight")}var h,g,b=[9,13,27,38,40],v=200,$=e.$eval(n.typeaheadMinLength);$||0===$||($=1),e.$watch(n.typeaheadMinLength,function(e){$=e||0===e?e:1});var y=e.$eval(n.typeaheadWaitMs)||0,w=e.$eval(n.typeaheadEditable)!==!1;e.$watch(n.typeaheadEditable,function(e){w=e!==!1});var k,D,x=i(n.typeaheadLoading).assign||angular.noop,C=n.typeaheadShouldSelect?i(n.typeaheadShouldSelect):function(e,t){var n=t.$event;return 13===n.which||9===n.which},M=i(n.typeaheadOnSelect),T=!!angular.isDefined(n.typeaheadSelectOnBlur)&&e.$eval(n.typeaheadSelectOnBlur),O=i(n.typeaheadNoResults).assign||angular.noop,P=n.typeaheadInputFormatter?i(n.typeaheadInputFormatter):void 0,S=!!n.typeaheadAppendToBody&&e.$eval(n.typeaheadAppendToBody),E=n.typeaheadAppendTo?e.$eval(n.typeaheadAppendTo):null,A=e.$eval(n.typeaheadFocusFirst)!==!1,I=!!n.typeaheadSelectOnExact&&e.$eval(n.typeaheadSelectOnExact),U=i(n.typeaheadIsOpen).assign||angular.noop,N=e.$eval(n.typeaheadShowHint)||!1,F=i(n.ngModel),H=i(n.ngModel+"($$$p)"),V=function(t,n){return angular.isFunction(F(e))&&g&&g.$options&&g.$options.getterSetter?H(t,{$$$p:n}):F.assign(t,n)},R=d.parse(n.uibTypeahead),q=e.$new(),L=e.$on("$destroy",function(){q.$destroy()});q.$on("$destroy",L);var Y="typeahead-"+q.$id+"-"+Math.floor(1e4*Math.random());t.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":Y});var z,B;N&&(z=angular.element("<div></div>"),z.css("position","relative"),t.after(z),B=t.clone(),B.attr("placeholder",""),B.attr("tabindex","-1"),B.val(""),B.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),t.css({position:"relative","vertical-align":"top","background-color":"transparent"}),B.attr("id")&&B.removeAttr("id"),z.append(B),B.after(t));var W=angular.element("<div uib-typeahead-popup></div>");W.attr({id:Y,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(n.typeaheadTemplateUrl)&&W.attr("template-url",n.typeaheadTemplateUrl),angular.isDefined(n.typeaheadPopupTemplateUrl)&&W.attr("popup-template-url",n.typeaheadPopupTemplateUrl);var j=function(){N&&B.val("")},_=function(){q.matches=[],q.activeIdx=-1,t.attr("aria-expanded",!1),j()},G=function(e){return Y+"-option-"+e};q.$watch("activeIdx",function(e){e<0?t.removeAttr("aria-activedescendant"):t.attr("aria-activedescendant",G(e))});var K=function(e,t){return!!(q.matches.length>t&&e)&&e.toUpperCase()===q.matches[t].label.toUpperCase()},X=function(n,a){var i={$viewValue:n};x(e,!0),O(e,!1),o.when(R.source(e,i)).then(function(o){var r=n===h.$viewValue;if(r&&k)if(o&&o.length>0){q.activeIdx=A?0:-1,O(e,!1),q.matches.length=0;for(var l=0;l<o.length;l++)i[R.itemName]=o[l],q.matches.push({id:G(l),label:R.viewMapper(q,i),model:o[l]});if(q.query=n,f(),t.attr("aria-expanded",!0),I&&1===q.matches.length&&K(n,0)&&(angular.isNumber(q.debounceUpdate)||angular.isObject(q.debounceUpdate)?p(function(){q.select(0,a)},angular.isNumber(q.debounceUpdate)?q.debounceUpdate:q.debounceUpdate["default"]):q.select(0,a)),N){var s=q.matches[0].label;angular.isString(n)&&n.length>0&&s.slice(0,n.length).toUpperCase()===n.toUpperCase()?B.val(n+s.slice(n.length)):B.val("")}}else _(),O(e,!0);r&&x(e,!1)},function(){_(),x(e,!1),O(e,!0)})};S&&(angular.element(s).on("resize",m),l.find("body").on("scroll",m));var Z=p(function(){q.matches.length&&f(),q.moveInProgress=!1},v);q.moveInProgress=!1,q.query=void 0;var J,Q=function(e){J=r(function(){X(e)},y)},ee=function(){J&&r.cancel(J)};_(),q.assignIsOpen=function(t){U(e,t)},q.select=function(a,i){var o,l,s={};D=!0,s[R.itemName]=l=q.matches[a].model,o=R.modelMapper(e,s),V(e,o),h.$setValidity("editable",!0),h.$setValidity("parse",!0),M(e,{$item:l,$model:o,$label:R.viewMapper(e,s),$event:i}),_(),q.$eval(n.typeaheadFocusOnSelect)!==!1&&r(function(){t[0].focus()},0,!1)},t.on("keydown",function(t){if(0!==q.matches.length&&b.indexOf(t.which)!==-1){var n=C(e,{$event:t});if(q.activeIdx===-1&&n||9===t.which&&t.shiftKey)return _(),void q.$digest();t.preventDefault();var a;switch(t.which){case 27:t.stopPropagation(),_(),e.$digest();break;case 38:q.activeIdx=(q.activeIdx>0?q.activeIdx:q.matches.length)-1,q.$digest(),a=W[0].querySelectorAll(".uib-typeahead-match")[q.activeIdx],a.parentNode.scrollTop=a.offsetTop;break;case 40:q.activeIdx=(q.activeIdx+1)%q.matches.length,q.$digest(),a=W[0].querySelectorAll(".uib-typeahead-match")[q.activeIdx],a.parentNode.scrollTop=a.offsetTop;break;default:n&&q.$apply(function(){angular.isNumber(q.debounceUpdate)||angular.isObject(q.debounceUpdate)?p(function(){q.select(q.activeIdx,t)},angular.isNumber(q.debounceUpdate)?q.debounceUpdate:q.debounceUpdate["default"]):q.select(q.activeIdx,t)})}}}),t.bind("focus",function(e){k=!0,0!==$||h.$viewValue||r(function(){X(h.$viewValue,e)},0)}),t.bind("blur",function(e){T&&q.matches.length&&q.activeIdx!==-1&&!D&&(D=!0,q.$apply(function(){angular.isObject(q.debounceUpdate)&&angular.isNumber(q.debounceUpdate.blur)?p(function(){q.select(q.activeIdx,e)},q.debounceUpdate.blur):q.select(q.activeIdx,e)})),!w&&h.$error.editable&&(h.$setViewValue(),q.$apply(function(){h.$setValidity("editable",!0),h.$setValidity("parse",!0)}),t.val("")),k=!1,D=!1});var te=function(n){t[0]!==n.target&&3!==n.which&&0!==q.matches.length&&(_(),u.$$phase||e.$digest())};l.on("click",te),e.$on("$destroy",function(){l.off("click",te),(S||E)&&ne.remove(),S&&(angular.element(s).off("resize",m),l.find("body").off("scroll",m)),W.remove(),N&&z.remove()});var ne=a(W)(q);S?l.find("body").append(ne):E?angular.element(E).eq(0).append(ne):t.after(ne),this.init=function(t,n){h=t,g=n,q.debounceUpdate=h.$options&&i(h.$options.debounce)(e),h.$parsers.unshift(function(t){return k=!0,0===$||t&&t.length>=$?y>0?(ee(),Q(t)):X(t):(x(e,!1),ee(),_()),w?t:t?void h.$setValidity("editable",!1):(h.$setValidity("editable",!0),null)}),h.$formatters.push(function(t){var n,a,i={};return w||h.$setValidity("editable",!0),P?(i.$model=t,P(e,i)):(i[R.itemName]=t,n=R.viewMapper(e,i),i[R.itemName]=void 0,a=R.viewMapper(e,i),n!==a?n:t)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(e,t,n,a){
diff --git a/xos/core/xoslib/static/vendor/xosMcord-slicingVendor.js b/xos/core/xoslib/static/vendor/xosMcord-slicingVendor.js
index 261453d..9d37721 100644
--- a/xos/core/xoslib/static/vendor/xosMcord-slicingVendor.js
+++ b/xos/core/xoslib/static/vendor/xosMcord-slicingVendor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 (function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){var e=r.length;switch(e){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var i=-1,u=n.length;++i<u;){var o=n[i];t(e,o,r(o),n)}return e}function i(n,t){for(var r=-1,e=n.length,i=-1,u=t.length,o=Array(e+u);++r<e;)o[r]=n[r];for(;++i<u;)o[r++]=t[i];return o}function u(n,t){for(var r=-1,e=n.length;++r<e&&t(n[r],r,n)!==!1;);return n}function o(n,t){for(var r=n.length;r--&&t(n[r],r,n)!==!1;);return n}function a(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return!1;return!0}function f(n,t){for(var r=-1,e=n.length,i=0,u=[];++r<e;){var o=n[r];t(o,r,n)&&(u[i++]=o)}return u}function c(n,t){return!!n.length&&y(n,t,0)>-1}function s(n,t,r){for(var e=-1,i=n.length;++e<i;)if(r(t,n[e]))return!0;return!1}function l(n,t){for(var r=-1,e=n.length,i=Array(e);++r<e;)i[r]=t(n[r],r,n);return i}function h(n,t){for(var r=-1,e=t.length,i=n.length;++r<e;)n[i+r]=t[r];return n}function p(n,t,r,e){var i=-1,u=n.length;for(e&&u&&(r=n[++i]);++i<u;)r=t(r,n[i],i,n);return r}function v(n,t,r,e){var i=n.length;for(e&&i&&(r=n[--i]);i--;)r=t(r,n[i],i,n);return r}function _(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return!0;return!1}function d(n,t,r,e){var i;return r(n,function(n,r,u){if(t(n,r,u))return i=e?r:n,!1}),i}function g(n,t,r){for(var e=n.length,i=r?e:-1;r?i--:++i<e;)if(t(n[i],i,n))return i;return-1}function y(n,t,r){if(t!==t)return U(n,r);for(var e=r-1,i=n.length;++e<i;)if(n[e]===t)return e;return-1}function w(n,t,r,e){for(var i=r-1,u=n.length;++i<u;)if(e(n[i],t))return i;return-1}function b(n,t){var r=n?n.length:0;return r?j(n,t)/r:bn}function m(n,t,r,e,i){return i(n,function(n,i,u){r=e?(e=!1,n):t(r,n,i,u)}),r}function x(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].value;return n}function j(n,t){for(var r,e=-1,i=n.length;++e<i;){var u=t(n[e]);u!==V&&(r=r===V?u:r+u)}return r}function k(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return l(t,function(t){return[t,n[t]]})}function A(n){return function(t){return n(t)}}function O(n,t){return l(t,function(t){return n[t]})}function I(n,t){for(var r=-1,e=n.length;++r<e&&y(t,n[r],0)>-1;);return r}function C(n,t){for(var r=n.length;r--&&y(t,n[r],0)>-1;);return r}function N(n){return n&&n.Object===Object?n:null}function L(n,t){for(var r=n.length,e=0;r--;)n[r]===t&&e++;return e}function R(n){return xr[n]}function S(n){return jr[n]}function W(n){return"\\"+Ar[n]}function U(n,t,r){for(var e=n.length,i=t+(r?0:-1);r?i--:++i<e;){var u=n[i];if(u!==u)return i}return-1}function D(n){var t=!1;if(null!=n&&"function"!=typeof n.toString)try{t=!!(n+"")}catch(r){}return t}function F(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function z(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function M(n,t){for(var r=-1,e=n.length,i=0,u=[];++r<e;){var o=n[r];o!==t&&o!==J||(n[r]=J,u[i++]=r)}return u}function B(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function P(n){if(!n||!dr.test(n))return n.length;for(var t=vr.lastIndex=0;vr.test(n);)t++;return t}function $(n){return n.match(vr)}function T(n){return kr[n]}function q(N){function Ct(n){if(ca(n)&&!tl(n)&&!(n instanceof Rt)){if(n instanceof Lt)return n;if(_c.call(n,"__wrapped__"))return tu(n)}return new Lt(n)}function Nt(){}function Lt(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=V}function Rt(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=mn,this.__views__=[]}function St(){var n=new Rt(this.__wrapped__);return n.__actions__=Je(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Je(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Je(this.__views__),n}function Wt(){if(this.__filtered__){var n=new Rt(this);n.__dir__=-1,n.__filtered__=!0}else n=this.clone(),n.__dir__*=-1;return n}function Ut(){var n=this.__wrapped__.value(),t=this.__dir__,r=tl(n),e=t<0,i=r?n.length:0,u=Si(0,i,this.__views__),o=u.start,a=u.end,f=a-o,c=e?a:o-1,s=this.__iteratees__,l=s.length,h=0,p=Bc(f,this.__takeCount__);if(!r||i<Z||i==f&&p==f)return Le(n,this.__actions__);var v=[];n:for(;f--&&h<p;){c+=t;for(var _=-1,d=n[c];++_<l;){var g=s[_],y=g.iteratee,w=g.type,b=y(d);if(w==_n)d=b;else if(!b){if(w==vn)continue n;break n}}v[h++]=d}return v}function Dt(){}function Ft(n,t){return Mt(n,t)&&delete n[t]}function zt(n,t){if(Qc){var r=n[t];return r===Y?V:r}return _c.call(n,t)?n[t]:V}function Mt(n,t){return Qc?n[t]!==V:_c.call(n,t)}function Bt(n,t,r){n[t]=Qc&&r===V?Y:r}function Pt(n){var t=-1,r=n?n.length:0;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function $t(){this.__data__={hash:new Dt,map:Zc?new Zc:[],string:new Dt}}function Tt(n){var t=this.__data__;return qi(n)?Ft("string"==typeof n?t.string:t.hash,n):Zc?t.map["delete"](n):rr(t.map,n)}function qt(n){var t=this.__data__;return qi(n)?zt("string"==typeof n?t.string:t.hash,n):Zc?t.map.get(n):er(t.map,n)}function Vt(n){var t=this.__data__;return qi(n)?Mt("string"==typeof n?t.string:t.hash,n):Zc?t.map.has(n):ir(t.map,n)}function Gt(n,t){var r=this.__data__;return qi(n)?Bt("string"==typeof n?r.string:r.hash,n,t):Zc?r.map.set(n,t):or(r.map,n,t),this}function Zt(n){var t=-1,r=n?n.length:0;for(this.__data__=new Pt;++t<r;)this.push(n[t])}function Kt(n,t){var r=n.__data__;if(qi(t)){var e=r.__data__,i="string"==typeof t?e.string:e.hash;return i[t]===Y}return r.has(t)}function Yt(n){var t=this.__data__;if(qi(n)){var r=t.__data__,e="string"==typeof n?r.string:r.hash;e[n]=Y}else t.set(n,Y)}function Jt(n){var t=-1,r=n?n.length:0;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Qt(){this.__data__={array:[],map:null}}function Ht(n){var t=this.__data__,r=t.array;return r?rr(r,n):t.map["delete"](n)}function Xt(n){var t=this.__data__,r=t.array;return r?er(r,n):t.map.get(n)}function nr(n){var t=this.__data__,r=t.array;return r?ir(r,n):t.map.has(n)}function tr(n,t){var r=this.__data__,e=r.array;e&&(e.length<Z-1?or(e,n,t):(r.array=null,r.map=new Pt(e)));var i=r.map;return i&&i.set(n,t),this}function rr(n,t){var r=ur(n,t);if(r<0)return!1;var e=n.length-1;return r==e?n.pop():Rc.call(n,r,1),!0}function er(n,t){var r=ur(n,t);return r<0?V:n[r][1]}function ir(n,t){return ur(n,t)>-1}function ur(n,t){for(var r=n.length;r--;)if(Go(n[r][0],t))return r;return-1}function or(n,t,r){var e=ur(n,t);e<0?n.push([t,r]):n[e][1]=r}function ar(n,t,r,e){return n===V||Go(n,hc[r])&&!_c.call(e,r)?t:n}function fr(n,t,r){(r===V||Go(n[t],r))&&("number"!=typeof t||r!==V||t in n)||(n[t]=r)}function cr(n,t,r){var e=n[t];_c.call(n,t)&&Go(e,r)&&(r!==V||t in n)||(n[t]=r)}function sr(n,t,r,e){return cs(n,function(n,i,u){t(e,n,r(n),u)}),e}function lr(n,t){return n&&Qe(t,Za(t),n)}function vr(n,t){for(var r=-1,e=null==n,i=t.length,u=Array(i);++r<i;)u[r]=e?V:qa(n,t[r]);return u}function xr(n,t,r){return n===n&&(r!==V&&(n=n<=r?n:r),t!==V&&(n=n>=t?n:t)),n}function jr(n,t,r,e,i,o,a){var f;if(e&&(f=o?e(n,i,o,a):e(n)),f!==V)return f;if(!fa(n))return n;var c=tl(n);if(c){if(f=Ui(n),!t)return Je(n,f)}else{var s=Ri(n),l=s==Cn||s==Nn;if(rl(n))return ze(n,t);if(s==Sn||s==kn||l&&!o){if(D(n))return o?n:{};if(f=Di(l?{}:n),!t)return He(n,lr(f,n))}else{if(!mr[s])return o?n:{};f=Fi(n,s,jr,t)}}a||(a=new Jt);var h=a.get(n);if(h)return h;if(a.set(n,f),!c)var p=r?ji(n):Za(n);return u(p||n,function(i,u){p&&(u=i,i=n[u]),cr(f,u,jr(i,t,r,e,u,n,a))}),f}function kr(n){var t=Za(n),r=t.length;return function(e){if(null==e)return!r;for(var i=r;i--;){var u=t[i],o=n[u],a=e[u];if(a===V&&!(u in Object(e))||!o(a))return!1}return!0}}function Er(n){return fa(n)?Cc(n):{}}function Ar(n,t,r){if("function"!=typeof n)throw new sc(K);return Lc(function(){n.apply(V,r)},t)}function Cr(n,t,r,e){var i=-1,u=c,o=!0,a=n.length,f=[],h=t.length;if(!a)return f;r&&(t=l(t,A(r))),e?(u=s,o=!1):t.length>=Z&&(u=Kt,o=!1,t=new Zt(t));n:for(;++i<a;){var p=n[i],v=r?r(p):p;if(p=e||0!==p?p:0,o&&v===v){for(var _=h;_--;)if(t[_]===v)continue n;f.push(p)}else u(t,v,e)||f.push(p)}return f}function Nr(n,t){var r=!0;return cs(n,function(n,e,i){return r=!!t(n,e,i)}),r}function Rr(n,t,r){for(var e=-1,i=n.length;++e<i;){var u=n[e],o=t(u);if(null!=o&&(a===V?o===o&&!ja(o):r(o,a)))var a=o,f=u}return f}function Sr(n,t,r,e){var i=n.length;for(r=Ca(r),r<0&&(r=-r>i?0:i+r),e=e===V||e>i?i:Ca(e),e<0&&(e+=i),e=r>e?0:Na(e);r<e;)n[r++]=t;return n}function Wr(n,t){var r=[];return cs(n,function(n,e,i){t(n,e,i)&&r.push(n)}),r}function Ur(n,t,r,e,i){var u=-1,o=n.length;for(r||(r=Mi),i||(i=[]);++u<o;){var a=n[u];t>0&&r(a)?t>1?Ur(a,t-1,r,e,i):h(i,a):e||(i[i.length]=a)}return i}function zr(n,t){return n&&ls(n,t,Za)}function Mr(n,t){return n&&hs(n,t,Za)}function Br(n,t){return f(t,function(t){return ua(n[t])})}function Pr(n,t){t=Ti(t,n)?[t]:De(t);for(var r=0,e=t.length;null!=n&&r<e;)n=n[Xi(t[r++])];return r&&r==e?n:V}function $r(n,t,r){var e=t(n);return tl(n)?e:h(e,r(n))}function Tr(n,t){return n>t}function qr(n,t){return _c.call(n,t)||"object"==typeof n&&t in n&&null===Ni(n)}function Vr(n,t){return t in Object(n)}function Gr(n,t,r){return n>=Bc(t,r)&&n<Mc(t,r)}function Zr(n,t,r){for(var e=r?s:c,i=n[0].length,u=n.length,o=u,a=Array(u),f=1/0,h=[];o--;){var p=n[o];o&&t&&(p=l(p,A(t))),f=Bc(p.length,f),a[o]=!r&&(t||i>=120&&p.length>=120)?new Zt(o&&p):V}p=n[0];var v=-1,_=a[0];n:for(;++v<i&&h.length<f;){var d=p[v],g=t?t(d):d;if(d=r||0!==d?d:0,!(_?Kt(_,g):e(h,g,r))){for(o=u;--o;){var y=a[o];if(!(y?Kt(y,g):e(n[o],g,r)))continue n}_&&_.push(g),h.push(d)}}return h}function Kr(n,t,r,e){return zr(n,function(n,i,u){t(e,r(n),i,u)}),e}function Yr(n,t,e){Ti(t,n)||(t=De(t),n=Qi(n,t),t=bu(t));var i=null==n?n:n[Xi(t)];return null==i?V:r(i,n,e)}function Jr(n,t,r,e,i){return n===t||(null==n||null==t||!fa(n)&&!ca(t)?n!==n&&t!==t:Qr(n,t,Jr,r,e,i))}function Qr(n,t,r,e,i,u){var o=tl(n),a=tl(t),f=En,c=En;o||(f=Ri(n),f=f==kn?Sn:f),a||(c=Ri(t),c=c==kn?Sn:c);var s=f==Sn&&!D(n),l=c==Sn&&!D(t),h=f==c;if(h&&!s)return u||(u=new Jt),o||ka(n)?bi(n,t,r,e,i,u):mi(n,t,f,r,e,i,u);if(!(i&cn)){var p=s&&_c.call(n,"__wrapped__"),v=l&&_c.call(t,"__wrapped__");if(p||v){var _=p?n.value():n,d=v?t.value():t;return u||(u=new Jt),r(_,d,e,i,u)}}return!!h&&(u||(u=new Jt),xi(n,t,r,e,i,u))}function Hr(n,t,r,e){var i=r.length,u=i,o=!e;if(null==n)return!u;for(n=Object(n);i--;){var a=r[i];if(o&&a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++i<u;){a=r[i];var f=a[0],c=n[f],s=a[1];if(o&&a[2]){if(c===V&&!(f in n))return!1}else{var l=new Jt;if(e)var h=e(c,s,f,n,t,l);if(!(h===V?Jr(s,c,e,fn|cn,l):h))return!1}}return!0}function Xr(n){return"function"==typeof n?n:null==n?Mf:"object"==typeof n?tl(n)?ue(n[0],n[1]):ie(n):Zf(n)}function ne(n){return zc(Object(n))}function te(n){n=null==n?n:Object(n);var t=[];for(var r in n)t.push(r);return t}function re(n,t){return n<t}function ee(n,t){var r=-1,e=Yo(n)?Array(n.length):[];return cs(n,function(n,i,u){e[++r]=t(n,i,u)}),e}function ie(n){var t=Oi(n);return 1==t.length&&t[0][2]?Ki(t[0][0],t[0][1]):function(r){return r===n||Hr(r,n,t)}}function ue(n,t){return Ti(n)&&Zi(t)?Ki(Xi(n),t):function(r){var e=qa(r,n);return e===V&&e===t?Ga(r,n):Jr(t,e,V,fn|cn)}}function oe(n,t,r,e,i){if(n!==t){if(!tl(t)&&!ka(t))var o=Ka(t);u(o||t,function(u,a){if(o&&(a=u,u=t[a]),fa(u))i||(i=new Jt),ae(n,t,a,r,oe,e,i);else{var f=e?e(n[a],u,a+"",n,t,i):V;f===V&&(f=u),fr(n,a,f)}})}}function ae(n,t,r,e,i,u,o){var a=n[r],f=t[r],c=o.get(f);if(c)return void fr(n,r,c);var s=u?u(a,f,r+"",n,t,o):V,l=s===V;l&&(s=f,tl(f)||ka(f)?tl(a)?s=a:Jo(a)?s=Je(a):(l=!1,s=jr(f,!0)):ya(f)||Zo(f)?Zo(a)?s=Ra(a):!fa(a)||e&&ua(a)?(l=!1,s=jr(f,!0)):s=a:l=!1),o.set(f,s),l&&i(s,f,e,u,o),o["delete"](f),fr(n,r,s)}function fe(n,t){var r=n.length;if(r)return t+=t<0?r:0,Pi(t,r)?n[t]:V}function ce(n,t,r){var e=-1;t=l(t.length?t:[Mf],A(Ai()));var i=ee(n,function(n,r,i){var u=l(t,function(t){return t(n)});return{criteria:u,index:++e,value:n}});return x(i,function(n,t){return Ze(n,t,r)})}function se(n,t){return n=Object(n),p(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function le(n,t){for(var r=-1,e=ki(n),i=e.length,u={};++r<i;){var o=e[r],a=n[o];t(a,o)&&(u[o]=a)}return u}function he(n){return function(t){return null==t?V:t[n]}}function pe(n){return function(t){return Pr(t,n)}}function ve(n,t,r,e){var i=e?w:y,u=-1,o=t.length,a=n;for(r&&(a=l(n,A(r)));++u<o;)for(var f=0,c=t[u],s=r?r(c):c;(f=i(a,s,f,e))>-1;)a!==n&&Rc.call(a,f,1),Rc.call(n,f,1);return n}function _e(n,t){for(var r=n?t.length:0,e=r-1;r--;){var i=t[r];if(r==e||i!==u){var u=i;if(Pi(i))Rc.call(n,i,1);else if(Ti(i,n))delete n[Xi(i)];else{var o=De(i),a=Qi(n,o);null!=a&&delete a[Xi(bu(o))]}}}return n}function de(n,t){return n+Wc($c()*(t-n+1))}function ge(n,t,r,e){for(var i=-1,u=Mc(Sc((t-n)/(r||1)),0),o=Array(u);u--;)o[e?u:++i]=n,n+=r;return o}function ye(n,t){var r="";if(!n||t<1||t>yn)return r;do t%2&&(r+=n),t=Wc(t/2),t&&(n+=n);while(t);return r}function we(n,t,r,e){t=Ti(t,n)?[t]:De(t);for(var i=-1,u=t.length,o=u-1,a=n;null!=a&&++i<u;){var f=Xi(t[i]);if(fa(a)){var c=r;if(i!=o){var s=a[f];c=e?e(s,f,a):V,c===V&&(c=null==s?Pi(t[i+1])?[]:{}:s)}cr(a,f,c)}a=a[f]}return n}function be(n,t,r){var e=-1,i=n.length;t<0&&(t=-t>i?0:i+t),r=r>i?i:r,r<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var u=Array(i);++e<i;)u[e]=n[e+t];return u}function me(n,t){var r;return cs(n,function(n,e,i){return r=t(n,e,i),!r}),!!r}function xe(n,t,r){var e=0,i=n?n.length:e;if("number"==typeof t&&t===t&&i<=jn){for(;e<i;){var u=e+i>>>1,o=n[u];null!==o&&!ja(o)&&(r?o<=t:o<t)?e=u+1:i=u}return i}return je(n,t,Mf,r)}function je(n,t,r,e){t=r(t);for(var i=0,u=n?n.length:0,o=t!==t,a=null===t,f=ja(t),c=t===V;i<u;){var s=Wc((i+u)/2),l=r(n[s]),h=l!==V,p=null===l,v=l===l,_=ja(l);if(o)var d=e||v;else d=c?v&&(e||h):a?v&&h&&(e||!p):f?v&&h&&!p&&(e||!_):!p&&!_&&(e?l<=t:l<t);d?i=s+1:u=s}return Bc(u,xn)}function ke(n,t){for(var r=-1,e=n.length,i=0,u=[];++r<e;){var o=n[r],a=t?t(o):o;if(!r||!Go(a,f)){var f=a;u[i++]=0===o?0:o}}return u}function Ee(n){return"number"==typeof n?n:ja(n)?bn:+n}function Ae(n){if("string"==typeof n)return n;if(ja(n))return fs?fs.call(n):"";var t=n+"";return"0"==t&&1/n==-gn?"-0":t}function Oe(n,t,r){var e=-1,i=c,u=n.length,o=!0,a=[],f=a;if(r)o=!1,i=s;else if(u>=Z){var l=t?null:vs(n);if(l)return B(l);o=!1,i=Kt,f=new Zt}else f=t?[]:a;n:for(;++e<u;){var h=n[e],p=t?t(h):h;if(h=r||0!==h?h:0,o&&p===p){for(var v=f.length;v--;)if(f[v]===p)continue n;t&&f.push(p),a.push(h)}else i(f,p,r)||(f!==a&&f.push(p),a.push(h))}return a}function Ie(n,t){t=Ti(t,n)?[t]:De(t),n=Qi(n,t);var r=Xi(bu(t));return!(null!=n&&qr(n,r))||delete n[r]}function Ce(n,t,r,e){return we(n,t,r(Pr(n,t)),e)}function Ne(n,t,r,e){for(var i=n.length,u=e?i:-1;(e?u--:++u<i)&&t(n[u],u,n););return r?be(n,e?0:u,e?u+1:i):be(n,e?u+1:0,e?i:u)}function Le(n,t){var r=n;return r instanceof Rt&&(r=r.value()),p(t,function(n,t){return t.func.apply(t.thisArg,h([n],t.args))},r)}function Re(n,t,r){for(var e=-1,i=n.length;++e<i;)var u=u?h(Cr(u,n[e],t,r),Cr(n[e],u,t,r)):n[e];return u&&u.length?Oe(u,t,r):[]}function Se(n,t,r){for(var e=-1,i=n.length,u=t.length,o={};++e<i;){var a=e<u?t[e]:V;r(o,n[e],a)}return o}function We(n){return Jo(n)?n:[]}function Ue(n){return"function"==typeof n?n:Mf}function De(n){return tl(n)?n:ws(n)}function Fe(n,t,r){var e=n.length;return r=r===V?e:r,!t&&r>=e?n:be(n,t,r)}function ze(n,t){if(t)return n.slice();var r=new n.constructor(n.length);return n.copy(r),r}function Me(n){var t=new n.constructor(n.byteLength);return new kc(t).set(new kc(n)),t}function Be(n,t){var r=t?Me(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}function Pe(t,r,e){var i=r?e(z(t),!0):z(t);return p(i,n,new t.constructor)}function $e(n){var t=new n.constructor(n.source,wt.exec(n));return t.lastIndex=n.lastIndex,t}function Te(n,r,e){var i=r?e(B(n),!0):B(n);return p(i,t,new n.constructor)}function qe(n){return as?Object(as.call(n)):{}}function Ve(n,t){var r=t?Me(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function Ge(n,t){if(n!==t){var r=n!==V,e=null===n,i=n===n,u=ja(n),o=t!==V,a=null===t,f=t===t,c=ja(t);if(!a&&!c&&!u&&n>t||u&&o&&f&&!a&&!c||e&&o&&f||!r&&f||!i)return 1;if(!e&&!u&&!c&&n<t||c&&r&&i&&!e&&!u||a&&r&&i||!o&&i||!f)return-1}return 0}function Ze(n,t,r){for(var e=-1,i=n.criteria,u=t.criteria,o=i.length,a=r.length;++e<o;){var f=Ge(i[e],u[e]);if(f){if(e>=a)return f;var c=r[e];return f*("desc"==c?-1:1)}}return n.index-t.index}function Ke(n,t,r,e){for(var i=-1,u=n.length,o=r.length,a=-1,f=t.length,c=Mc(u-o,0),s=Array(f+c),l=!e;++a<f;)s[a]=t[a];for(;++i<o;)(l||i<u)&&(s[r[i]]=n[i]);for(;c--;)s[a++]=n[i++];return s}function Ye(n,t,r,e){for(var i=-1,u=n.length,o=-1,a=r.length,f=-1,c=t.length,s=Mc(u-a,0),l=Array(s+c),h=!e;++i<s;)l[i]=n[i];for(var p=i;++f<c;)l[p+f]=t[f];for(;++o<a;)(h||i<u)&&(l[p+r[o]]=n[i++]);return l}function Je(n,t){var r=-1,e=n.length;for(t||(t=Array(e));++r<e;)t[r]=n[r];return t}function Qe(n,t,r,e){r||(r={});for(var i=-1,u=t.length;++i<u;){var o=t[i],a=e?e(r[o],n[o],o,r,n):n[o];cr(r,o,a)}return r}function He(n,t){return Qe(n,Li(n),t)}function Xe(n,t){return function(r,i){var u=tl(r)?e:sr,o=t?t():{};return u(r,n,Ai(i),o)}}function ni(n){return Do(function(t,r){var e=-1,i=r.length,u=i>1?r[i-1]:V,o=i>2?r[2]:V;for(u="function"==typeof u?(i--,u):V,o&&$i(r[0],r[1],o)&&(u=i<3?V:u,i=1),t=Object(t);++e<i;){var a=r[e];a&&n(t,a,e,u)}return t})}function ti(n,t){return function(r,e){if(null==r)return r;if(!Yo(r))return n(r,e);for(var i=r.length,u=t?i:-1,o=Object(r);(t?u--:++u<i)&&e(o[u],u,o)!==!1;);return r}}function ri(n){return function(t,r,e){for(var i=-1,u=Object(t),o=e(t),a=o.length;a--;){var f=o[n?a:++i];if(r(u[f],f,u)===!1)break}return t}}function ei(n,t,r){function e(){var t=this&&this!==Dr&&this instanceof e?u:n;return t.apply(i?r:this,arguments)}var i=t&Q,u=oi(n);return e}function ii(n){return function(t){t=Wa(t);var r=dr.test(t)?$(t):V,e=r?r[0]:t.charAt(0),i=r?Fe(r,1).join(""):t.slice(1);return e[n]()+i}}function ui(n){return function(t){return p(Uf(_f(t).replace(hr,"")),n,"")}}function oi(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=Er(n.prototype),e=n.apply(r,t);return fa(e)?e:r}}function ai(n,t,e){function i(){for(var o=arguments.length,a=Array(o),f=o,c=Ci(i);f--;)a[f]=arguments[f];var s=o<3&&a[0]!==c&&a[o-1]!==c?[]:M(a,c);if(o-=s.length,o<e)return gi(n,t,ci,i.placeholder,V,a,s,V,V,e-o);var l=this&&this!==Dr&&this instanceof i?u:n;return r(l,this,a)}var u=oi(n);return i}function fi(n){return Do(function(t){t=Ur(t,1);var r=t.length,e=r,i=Lt.prototype.thru;for(n&&t.reverse();e--;){var u=t[e];if("function"!=typeof u)throw new sc(K);if(i&&!o&&"wrapper"==Ei(u))var o=new Lt([],(!0))}for(e=o?e:r;++e<r;){u=t[e];var a=Ei(u),f="wrapper"==a?_s(u):V;o=f&&Vi(f[0])&&f[1]==(un|nn|rn|on)&&!f[4].length&&1==f[9]?o[Ei(f[0])].apply(o,f[3]):1==u.length&&Vi(u)?o[a]():o.thru(u)}return function(){var n=arguments,e=n[0];if(o&&1==n.length&&tl(e)&&e.length>=Z)return o.plant(e).value();for(var i=0,u=r?t[i].apply(this,n):e;++i<r;)u=t[i].call(this,u);return u}})}function ci(n,t,r,e,i,u,o,a,f,c){function s(){for(var g=arguments.length,y=g,w=Array(g);y--;)w[y]=arguments[y];if(v)var b=Ci(s),m=L(w,b);if(e&&(w=Ke(w,e,i,v)),u&&(w=Ye(w,u,o,v)),g-=m,v&&g<c){var x=M(w,b);return gi(n,t,ci,s.placeholder,r,w,x,a,f,c-g)}var j=h?r:this,k=p?j[n]:n;return g=w.length,a?w=Hi(w,a):_&&g>1&&w.reverse(),l&&f<g&&(w.length=f),this&&this!==Dr&&this instanceof s&&(k=d||oi(k)),k.apply(j,w)}var l=t&un,h=t&Q,p=t&H,v=t&(nn|tn),_=t&an,d=p?V:oi(n);return s}function si(n,t){return function(r,e){return Kr(r,n,t(e),{})}}function li(n){return function(t,r){var e;if(t===V&&r===V)return 0;if(t!==V&&(e=t),r!==V){if(e===V)return r;"string"==typeof t||"string"==typeof r?(t=Ae(t),r=Ae(r)):(t=Ee(t),r=Ee(r)),e=n(t,r)}return e}}function hi(n){return Do(function(t){return t=1==t.length&&tl(t[0])?l(t[0],A(Ai())):l(Ur(t,1,Bi),A(Ai())),Do(function(e){var i=this;return n(t,function(n){return r(n,i,e)})})})}function pi(n,t){t=t===V?" ":Ae(t);var r=t.length;if(r<2)return r?ye(t,n):t;var e=ye(t,Sc(n/P(t)));return dr.test(t)?Fe($(e),0,n).join(""):e.slice(0,n)}function vi(n,t,e,i){function u(){for(var t=-1,f=arguments.length,c=-1,s=i.length,l=Array(s+f),h=this&&this!==Dr&&this instanceof u?a:n;++c<s;)l[c]=i[c];for(;f--;)l[c++]=arguments[++t];return r(h,o?e:this,l)}var o=t&Q,a=oi(n);return u}function _i(n){return function(t,r,e){return e&&"number"!=typeof e&&$i(t,r,e)&&(r=e=V),t=La(t),t=t===t?t:0,r===V?(r=t,t=0):r=La(r)||0,e=e===V?t<r?1:-1:La(e)||0,ge(t,r,e,n)}}function di(n){return function(t,r){return"string"==typeof t&&"string"==typeof r||(t=La(t),r=La(r)),n(t,r)}}function gi(n,t,r,e,i,u,o,a,f,c){var s=t&nn,l=s?o:V,h=s?V:o,p=s?u:V,v=s?V:u;t|=s?rn:en,t&=~(s?en:rn),t&X||(t&=~(Q|H));var _=[n,t,i,p,l,v,h,a,f,c],d=r.apply(V,_);return Vi(n)&&ys(d,_),d.placeholder=e,d}function yi(n){var t=fc[n];return function(n,r){if(n=La(n),r=Ca(r)){var e=(Wa(n)+"e").split("e"),i=t(e[0]+"e"+(+e[1]+r));return e=(Wa(i)+"e").split("e"),+(e[0]+"e"+(+e[1]-r))}return t(n)}}function wi(n,t,r,e,i,u,o,a){var f=t&H;if(!f&&"function"!=typeof n)throw new sc(K);var c=e?e.length:0;if(c||(t&=~(rn|en),e=i=V),o=o===V?o:Mc(Ca(o),0),a=a===V?a:Ca(a),c-=i?i.length:0,t&en){var s=e,l=i;e=i=V}var h=f?V:_s(n),p=[n,t,r,e,i,s,l,u,o,a];if(h&&Yi(p,h),n=p[0],t=p[1],r=p[2],e=p[3],i=p[4],a=p[9]=null==p[9]?f?0:n.length:Mc(p[9]-c,0),!a&&t&(nn|tn)&&(t&=~(nn|tn)),t&&t!=Q)v=t==nn||t==tn?ai(n,t,a):t!=rn&&t!=(Q|rn)||i.length?ci.apply(V,p):vi(n,t,r,e);else var v=ei(n,t,r);var _=h?ps:ys;return _(v,p)}function bi(n,t,r,e,i,u){var o=-1,a=i&cn,f=i&fn,c=n.length,s=t.length;if(c!=s&&!(a&&s>c))return!1;var l=u.get(n);if(l)return l==t;var h=!0;for(u.set(n,t);++o<c;){var p=n[o],v=t[o];if(e)var d=a?e(v,p,o,t,n,u):e(p,v,o,n,t,u);if(d!==V){if(d)continue;h=!1;break}if(f){if(!_(t,function(n){return p===n||r(p,n,e,i,u)})){h=!1;break}}else if(p!==v&&!r(p,v,e,i,u)){h=!1;break}}return u["delete"](n),h}function mi(n,t,r,e,i,u,o){switch(r){case $n:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case Pn:return!(n.byteLength!=t.byteLength||!e(new kc(n),new kc(t)));case An:case On:return+n==+t;case In:return n.name==t.name&&n.message==t.message;case Rn:return n!=+n?t!=+t:n==+t;case Un:case Fn:return n==t+"";case Ln:var a=z;case Dn:var f=u&cn;if(a||(a=B),n.size!=t.size&&!f)return!1;var c=o.get(n);return c?c==t:(u|=fn,o.set(n,t),bi(a(n),a(t),e,i,u,o));case zn:if(as)return as.call(n)==as.call(t)}return!1}function xi(n,t,r,e,i,u){var o=i&cn,a=Za(n),f=a.length,c=Za(t),s=c.length;if(f!=s&&!o)return!1;for(var l=f;l--;){var h=a[l];if(!(o?h in t:qr(t,h)))return!1}var p=u.get(n);if(p)return p==t;var v=!0;u.set(n,t);for(var _=o;++l<f;){h=a[l];var d=n[h],g=t[h];if(e)var y=o?e(g,d,h,t,n,u):e(d,g,h,n,t,u);if(!(y===V?d===g||r(d,g,e,i,u):y)){v=!1;break}_||(_="constructor"==h)}if(v&&!_){var w=n.constructor,b=t.constructor;w!=b&&"constructor"in n&&"constructor"in t&&!("function"==typeof w&&w instanceof w&&"function"==typeof b&&b instanceof b)&&(v=!1)}return u["delete"](n),v}function ji(n){return $r(n,Za,Li)}function ki(n){return $r(n,Ka,gs)}function Ei(n){for(var t=n.name+"",r=ns[t],e=_c.call(ns,t)?r.length:0;e--;){var i=r[e],u=i.func;if(null==u||u==n)return i.name}return t}function Ai(){var n=Ct.iteratee||Bf;return n=n===Bf?Xr:n,arguments.length?n(arguments[0],arguments[1]):n}function Oi(n){for(var t=rf(n),r=t.length;r--;)t[r][2]=Zi(t[r][1]);return t}function Ii(n,t){var r=n[t];return va(r)?r:V}function Ci(n){var t=_c.call(Ct,"placeholder")?Ct:n;return t.placeholder}function Ni(n){return Uc(Object(n))}function Li(n){return Oc(Object(n))}function Ri(n){return yc.call(n)}function Si(n,t,r){for(var e=-1,i=r.length;++e<i;){var u=r[e],o=u.size;switch(u.type){case"drop":n+=o;break;case"dropRight":t-=o;break;case"take":t=Bc(t,n+o);break;case"takeRight":n=Mc(n,t-o)}}return{start:n,end:t}}function Wi(n,t,r){t=Ti(t,n)?[t]:De(t);for(var e,i=-1,u=t.length;++i<u;){var o=Xi(t[i]);if(!(e=null!=n&&r(n,o)))break;n=n[o]}if(e)return e;var u=n?n.length:0;return!!u&&aa(u)&&Pi(o,u)&&(tl(n)||xa(n)||Zo(n))}function Ui(n){var t=n.length,r=n.constructor(t);return t&&"string"==typeof n[0]&&_c.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Di(n){return"function"!=typeof n.constructor||Gi(n)?{}:Er(Ni(n))}function Fi(n,t,r,e){var i=n.constructor;switch(t){case Pn:return Me(n);case An:case On:return new i((+n));case $n:return Be(n,e);case Tn:case qn:case Vn:case Gn:case Zn:case Kn:case Yn:case Jn:case Qn:return Ve(n,e);case Ln:return Pe(n,e,r);case Rn:case Fn:return new i(n);case Un:return $e(n);case Dn:return Te(n,e,r);case zn:return qe(n)}}function zi(n){var t=n?n.length:V;return aa(t)&&(tl(n)||xa(n)||Zo(n))?k(t,String):null}function Mi(n){return Jo(n)&&(tl(n)||Zo(n))}function Bi(n){return tl(n)&&!(2==n.length&&!ua(n[0]))}function Pi(n,t){return t=null==t?yn:t,!!t&&("number"==typeof n||Et.test(n))&&n>-1&&n%1==0&&n<t}function $i(n,t,r){if(!fa(r))return!1;var e=typeof t;return!!("number"==e?Yo(r)&&Pi(t,r.length):"string"==e&&t in r)&&Go(r[t],n)}function Ti(n,t){if(tl(n))return!1;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!ja(n))||(ct.test(n)||!ft.test(n)||null!=t&&n in Object(t))}function qi(n){var t=typeof n;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==n:null===n}function Vi(n){var t=Ei(n),r=Ct[t];if("function"!=typeof r||!(t in Rt.prototype))return!1;if(n===r)return!0;var e=_s(r);return!!e&&n===e[0]}function Gi(n){var t=n&&n.constructor,r="function"==typeof t&&t.prototype||hc;return n===r}function Zi(n){return n===n&&!fa(n)}function Ki(n,t){return function(r){return null!=r&&(r[n]===t&&(t!==V||n in Object(r)))}}function Yi(n,t){var r=n[1],e=t[1],i=r|e,u=i<(Q|H|un),o=e==un&&r==nn||e==un&&r==on&&n[7].length<=t[8]||e==(un|on)&&t[7].length<=t[8]&&r==nn;if(!u&&!o)return n;e&Q&&(n[2]=t[2],i|=r&Q?0:X);var a=t[3];if(a){var f=n[3];n[3]=f?Ke(f,a,t[4]):a,n[4]=f?M(n[3],J):t[4]}return a=t[5],a&&(f=n[5],n[5]=f?Ye(f,a,t[6]):a,n[6]=f?M(n[5],J):t[6]),a=t[7],a&&(n[7]=a),e&un&&(n[8]=null==n[8]?t[8]:Bc(n[8],t[8])),null==n[9]&&(n[9]=t[9]),n[0]=t[0],n[1]=i,n}function Ji(n,t,r,e,i,u){return fa(n)&&fa(t)&&oe(n,t,V,Ji,u.set(t,n)),n}function Qi(n,t){return 1==t.length?n:Pr(n,be(t,0,-1))}function Hi(n,t){for(var r=n.length,e=Bc(t.length,r),i=Je(n);e--;){var u=t[e];n[e]=Pi(u,r)?i[u]:V}return n}function Xi(n){if("string"==typeof n||ja(n))return n;var t=n+"";return"0"==t&&1/n==-gn?"-0":t}function nu(n){if(null!=n){try{return vc.call(n)}catch(t){}try{return n+""}catch(t){}}return""}function tu(n){if(n instanceof Rt)return n.clone();var t=new Lt(n.__wrapped__,n.__chain__);return t.__actions__=Je(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function ru(n,t,r){t=(r?$i(n,t,r):t===V)?1:Mc(Ca(t),0);var e=n?n.length:0;if(!e||t<1)return[];for(var i=0,u=0,o=Array(Sc(e/t));i<e;)o[u++]=be(n,i,i+=t);return o}function eu(n){for(var t=-1,r=n?n.length:0,e=0,i=[];++t<r;){var u=n[t];u&&(i[e++]=u)}return i}function iu(){var n=arguments.length,t=Po(arguments[0]);if(n<2)return n?Je(t):[];for(var r=Array(n-1);n--;)r[n-1]=arguments[n];return i(t,Ur(r,1))}function uu(n,t,r){var e=n?n.length:0;return e?(t=r||t===V?1:Ca(t),be(n,t<0?0:t,e)):[]}function ou(n,t,r){var e=n?n.length:0;return e?(t=r||t===V?1:Ca(t),t=e-t,be(n,0,t<0?0:t)):[]}function au(n,t){return n&&n.length?Ne(n,Ai(t,3),!0,!0):[]}function fu(n,t){return n&&n.length?Ne(n,Ai(t,3),!0):[]}function cu(n,t,r,e){var i=n?n.length:0;return i?(r&&"number"!=typeof r&&$i(n,t,r)&&(r=0,e=i),Sr(n,t,r,e)):[]}function su(n,t){return n&&n.length?g(n,Ai(t,3)):-1}function lu(n,t){return n&&n.length?g(n,Ai(t,3),!0):-1}function hu(n){var t=n?n.length:0;return t?Ur(n,1):[]}function pu(n){var t=n?n.length:0;return t?Ur(n,gn):[]}function vu(n,t){var r=n?n.length:0;return r?(t=t===V?1:Ca(t),Ur(n,t)):[]}function _u(n){for(var t=-1,r=n?n.length:0,e={};++t<r;){var i=n[t];e[i[0]]=i[1]}return e}function du(n){return n&&n.length?n[0]:V}function gu(n,t,r){var e=n?n.length:0;return e?(r=Ca(r),r<0&&(r=Mc(e+r,0)),y(n,t,r)):-1}function yu(n){return ou(n,1)}function wu(n,t){return n?Fc.call(n,t):""}function bu(n){var t=n?n.length:0;return t?n[t-1]:V}function mu(n,t,r){var e=n?n.length:0;if(!e)return-1;var i=e;if(r!==V&&(i=Ca(r),i=(i<0?Mc(e+i,0):Bc(i,e-1))+1),t!==t)return U(n,i,!0);for(;i--;)if(n[i]===t)return i;return-1}function xu(n,t){return n&&n.length?fe(n,Ca(t)):V}function ju(n,t){return n&&n.length&&t&&t.length?ve(n,t):n}function ku(n,t,r){return n&&n.length&&t&&t.length?ve(n,t,Ai(r)):n}function Eu(n,t,r){return n&&n.length&&t&&t.length?ve(n,t,V,r):n}function Au(n,t){var r=[];if(!n||!n.length)return r;var e=-1,i=[],u=n.length;for(t=Ai(t,3);++e<u;){var o=n[e];t(o,e,n)&&(r.push(o),i.push(e))}return _e(n,i),r}function Ou(n){return n?qc.call(n):n}function Iu(n,t,r){var e=n?n.length:0;return e?(r&&"number"!=typeof r&&$i(n,t,r)?(t=0,r=e):(t=null==t?0:Ca(t),r=r===V?e:Ca(r)),be(n,t,r)):[]}function Cu(n,t){return xe(n,t)}function Nu(n,t,r){return je(n,t,Ai(r))}function Lu(n,t){var r=n?n.length:0;if(r){var e=xe(n,t);if(e<r&&Go(n[e],t))return e}return-1}function Ru(n,t){return xe(n,t,!0)}function Su(n,t,r){return je(n,t,Ai(r),!0)}function Wu(n,t){var r=n?n.length:0;if(r){var e=xe(n,t,!0)-1;if(Go(n[e],t))return e}return-1}function Uu(n){return n&&n.length?ke(n):[]}function Du(n,t){return n&&n.length?ke(n,Ai(t)):[]}function Fu(n){return uu(n,1)}function zu(n,t,r){return n&&n.length?(t=r||t===V?1:Ca(t),be(n,0,t<0?0:t)):[]}function Mu(n,t,r){var e=n?n.length:0;return e?(t=r||t===V?1:Ca(t),t=e-t,be(n,t<0?0:t,e)):[]}function Bu(n,t){return n&&n.length?Ne(n,Ai(t,3),!1,!0):[]}function Pu(n,t){return n&&n.length?Ne(n,Ai(t,3)):[]}function $u(n){return n&&n.length?Oe(n):[]}function Tu(n,t){return n&&n.length?Oe(n,Ai(t)):[]}function qu(n,t){return n&&n.length?Oe(n,V,t):[]}function Vu(n){if(!n||!n.length)return[];var t=0;return n=f(n,function(n){if(Jo(n))return t=Mc(n.length,t),!0}),k(t,function(t){return l(n,he(t))})}function Gu(n,t){if(!n||!n.length)return[];var e=Vu(n);return null==t?e:l(e,function(n){return r(t,V,n)})}function Zu(n,t){return Se(n||[],t||[],cr)}function Ku(n,t){return Se(n||[],t||[],we)}function Yu(n){var t=Ct(n);return t.__chain__=!0,t}function Ju(n,t){return t(n),n}function Qu(n,t){return t(n)}function Hu(){return Yu(this)}function Xu(){return new Lt(this.value(),this.__chain__)}function no(){this.__values__===V&&(this.__values__=Ia(this.value()));var n=this.__index__>=this.__values__.length,t=n?V:this.__values__[this.__index__++];return{done:n,value:t}}function to(){return this}function ro(n){for(var t,r=this;r instanceof Nt;){var e=tu(r);e.__index__=0,e.__values__=V,t?i.__wrapped__=e:t=e;var i=e;r=r.__wrapped__}return i.__wrapped__=n,t}function eo(){var n=this.__wrapped__;if(n instanceof Rt){var t=n;return this.__actions__.length&&(t=new Rt(this)),t=t.reverse(),t.__actions__.push({func:Qu,args:[Ou],thisArg:V}),new Lt(t,this.__chain__)}return this.thru(Ou)}function io(){return Le(this.__wrapped__,this.__actions__)}function uo(n,t,r){var e=tl(n)?a:Nr;return r&&$i(n,t,r)&&(t=V),e(n,Ai(t,3))}function oo(n,t){var r=tl(n)?f:Wr;return r(n,Ai(t,3))}function ao(n,t){if(t=Ai(t,3),tl(n)){var r=g(n,t);return r>-1?n[r]:V}return d(n,t,cs)}function fo(n,t){if(t=Ai(t,3),tl(n)){var r=g(n,t,!0);return r>-1?n[r]:V}return d(n,t,ss)}function co(n,t){return Ur(_o(n,t),1)}function so(n,t){return Ur(_o(n,t),gn)}function lo(n,t,r){return r=r===V?1:Ca(r),Ur(_o(n,t),r)}function ho(n,t){return"function"==typeof t&&tl(n)?u(n,t):cs(n,Ai(t))}function po(n,t){return"function"==typeof t&&tl(n)?o(n,t):ss(n,Ai(t))}function vo(n,t,r,e){n=Yo(n)?n:cf(n),r=r&&!e?Ca(r):0;var i=n.length;return r<0&&(r=Mc(i+r,0)),xa(n)?r<=i&&n.indexOf(t,r)>-1:!!i&&y(n,t,r)>-1;
 }function _o(n,t){var r=tl(n)?l:ee;return r(n,Ai(t,3))}function go(n,t,r,e){return null==n?[]:(tl(t)||(t=null==t?[]:[t]),r=e?V:r,tl(r)||(r=null==r?[]:[r]),ce(n,t,r))}function yo(n,t,r){var e=tl(n)?p:m,i=arguments.length<3;return e(n,Ai(t,4),r,i,cs)}function wo(n,t,r){var e=tl(n)?v:m,i=arguments.length<3;return e(n,Ai(t,4),r,i,ss)}function bo(n,t){var r=tl(n)?f:Wr;return t=Ai(t,3),r(n,function(n,r,e){return!t(n,r,e)})}function mo(n){var t=Yo(n)?n:cf(n),r=t.length;return r>0?t[de(0,r-1)]:V}function xo(n,t,r){var e=-1,i=Ia(n),u=i.length,o=u-1;for(t=(r?$i(n,t,r):t===V)?1:xr(Ca(t),0,u);++e<t;){var a=de(e,o),f=i[a];i[a]=i[e],i[e]=f}return i.length=t,i}function jo(n){return xo(n,mn)}function ko(n){if(null==n)return 0;if(Yo(n)){var t=n.length;return t&&xa(n)?P(n):t}if(ca(n)){var r=Ri(n);if(r==Ln||r==Dn)return n.size}return Za(n).length}function Eo(n,t,r){var e=tl(n)?_:me;return r&&$i(n,t,r)&&(t=V),e(n,Ai(t,3))}function Ao(n,t){if("function"!=typeof t)throw new sc(K);return n=Ca(n),function(){if(--n<1)return t.apply(this,arguments)}}function Oo(n,t,r){return t=r?V:t,t=n&&null==t?n.length:t,wi(n,un,V,V,V,V,t)}function Io(n,t){var r;if("function"!=typeof t)throw new sc(K);return n=Ca(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=V),r}}function Co(n,t,r){t=r?V:t;var e=wi(n,nn,V,V,V,V,V,t);return e.placeholder=Co.placeholder,e}function No(n,t,r){t=r?V:t;var e=wi(n,tn,V,V,V,V,V,t);return e.placeholder=No.placeholder,e}function Lo(n,t,r){function e(t){var r=h,e=p;return h=p=V,y=t,_=n.apply(e,r)}function i(n){return y=n,d=Lc(a,t),w?e(n):_}function u(n){var r=n-g,e=n-y,i=t-r;return b?Bc(i,v-e):i}function o(n){var r=n-g,e=n-y;return!g||r>=t||r<0||b&&e>=v}function a(){var n=qs();return o(n)?f(n):void(d=Lc(a,u(n)))}function f(n){return Ec(d),d=V,m&&h?e(n):(h=p=V,_)}function c(){d!==V&&Ec(d),g=y=0,h=p=d=V}function s(){return d===V?_:f(qs())}function l(){var n=qs(),r=o(n);if(h=arguments,p=this,g=n,r){if(d===V)return i(g);if(b)return Ec(d),d=Lc(a,t),e(g)}return d===V&&(d=Lc(a,t)),_}var h,p,v,_,d,g=0,y=0,w=!1,b=!1,m=!0;if("function"!=typeof n)throw new sc(K);return t=La(t)||0,fa(r)&&(w=!!r.leading,b="maxWait"in r,v=b?Mc(La(r.maxWait)||0,t):v,m="trailing"in r?!!r.trailing:m),l.cancel=c,l.flush=s,l}function Ro(n){return wi(n,an)}function So(n,t){if("function"!=typeof n||t&&"function"!=typeof t)throw new sc(K);var r=function(){var e=arguments,i=t?t.apply(this,e):e[0],u=r.cache;if(u.has(i))return u.get(i);var o=n.apply(this,e);return r.cache=u.set(i,o),o};return r.cache=new(So.Cache||Pt),r}function Wo(n){if("function"!=typeof n)throw new sc(K);return function(){return!n.apply(this,arguments)}}function Uo(n){return Io(2,n)}function Do(n,t){if("function"!=typeof n)throw new sc(K);return t=Mc(t===V?n.length-1:Ca(t),0),function(){for(var e=arguments,i=-1,u=Mc(e.length-t,0),o=Array(u);++i<u;)o[i]=e[t+i];switch(t){case 0:return n.call(this,o);case 1:return n.call(this,e[0],o);case 2:return n.call(this,e[0],e[1],o)}var a=Array(t+1);for(i=-1;++i<t;)a[i]=e[i];return a[t]=o,r(n,this,a)}}function Fo(n,t){if("function"!=typeof n)throw new sc(K);return t=t===V?0:Mc(Ca(t),0),Do(function(e){var i=e[t],u=Fe(e,0,t);return i&&h(u,i),r(n,this,u)})}function zo(n,t,r){var e=!0,i=!0;if("function"!=typeof n)throw new sc(K);return fa(r)&&(e="leading"in r?!!r.leading:e,i="trailing"in r?!!r.trailing:i),Lo(n,t,{leading:e,maxWait:t,trailing:i})}function Mo(n){return Oo(n,1)}function Bo(n,t){return t=null==t?Mf:t,Js(t,n)}function Po(){if(!arguments.length)return[];var n=arguments[0];return tl(n)?n:[n]}function $o(n){return jr(n,!1,!0)}function To(n,t){return jr(n,!1,!0,t)}function qo(n){return jr(n,!0,!0)}function Vo(n,t){return jr(n,!0,!0,t)}function Go(n,t){return n===t||n!==n&&t!==t}function Zo(n){return Jo(n)&&_c.call(n,"callee")&&(!Nc.call(n,"callee")||yc.call(n)==kn)}function Ko(n){return ca(n)&&yc.call(n)==Pn}function Yo(n){return null!=n&&aa(ds(n))&&!ua(n)}function Jo(n){return ca(n)&&Yo(n)}function Qo(n){return n===!0||n===!1||ca(n)&&yc.call(n)==An}function Ho(n){return ca(n)&&yc.call(n)==On}function Xo(n){return!!n&&1===n.nodeType&&ca(n)&&!ya(n)}function na(n){if(Yo(n)&&(tl(n)||xa(n)||ua(n.splice)||Zo(n)||rl(n)))return!n.length;if(ca(n)){var t=Ri(n);if(t==Ln||t==Dn)return!n.size}for(var r in n)if(_c.call(n,r))return!1;return!(Xc&&Za(n).length)}function ta(n,t){return Jr(n,t)}function ra(n,t,r){r="function"==typeof r?r:V;var e=r?r(n,t):V;return e===V?Jr(n,t,r):!!e}function ea(n){return!!ca(n)&&(yc.call(n)==In||"string"==typeof n.message&&"string"==typeof n.name)}function ia(n){return"number"==typeof n&&Dc(n)}function ua(n){var t=fa(n)?yc.call(n):"";return t==Cn||t==Nn}function oa(n){return"number"==typeof n&&n==Ca(n)}function aa(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=yn}function fa(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function ca(n){return!!n&&"object"==typeof n}function sa(n){return ca(n)&&Ri(n)==Ln}function la(n,t){return n===t||Hr(n,t,Oi(t))}function ha(n,t,r){return r="function"==typeof r?r:V,Hr(n,t,Oi(t),r)}function pa(n){return ga(n)&&n!=+n}function va(n){if(!fa(n))return!1;var t=ua(n)||D(n)?bc:jt;return t.test(nu(n))}function _a(n){return null===n}function da(n){return null==n}function ga(n){return"number"==typeof n||ca(n)&&yc.call(n)==Rn}function ya(n){if(!ca(n)||yc.call(n)!=Sn||D(n))return!1;var t=Ni(n);if(null===t)return!0;var r=_c.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&vc.call(r)==gc}function wa(n){return fa(n)&&yc.call(n)==Un}function ba(n){return oa(n)&&n>=-yn&&n<=yn}function ma(n){return ca(n)&&Ri(n)==Dn}function xa(n){return"string"==typeof n||!tl(n)&&ca(n)&&yc.call(n)==Fn}function ja(n){return"symbol"==typeof n||ca(n)&&yc.call(n)==zn}function ka(n){return ca(n)&&aa(n.length)&&!!br[yc.call(n)]}function Ea(n){return n===V}function Aa(n){return ca(n)&&Ri(n)==Mn}function Oa(n){return ca(n)&&yc.call(n)==Bn}function Ia(n){if(!n)return[];if(Yo(n))return xa(n)?$(n):Je(n);if(Ic&&n[Ic])return F(n[Ic]());var t=Ri(n),r=t==Ln?z:t==Dn?B:cf;return r(n)}function Ca(n){if(!n)return 0===n?n:0;if(n=La(n),n===gn||n===-gn){var t=n<0?-1:1;return t*wn}var r=n%1;return n===n?r?n-r:n:0}function Na(n){return n?xr(Ca(n),0,mn):0}function La(n){if("number"==typeof n)return n;if(ja(n))return bn;if(fa(n)){var t=ua(n.valueOf)?n.valueOf():n;n=fa(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=n.replace(pt,"");var r=xt.test(n);return r||kt.test(n)?Ir(n.slice(2),r?2:8):mt.test(n)?bn:+n}function Ra(n){return Qe(n,Ka(n))}function Sa(n){return xr(Ca(n),-yn,yn)}function Wa(n){return null==n?"":Ae(n)}function Ua(n,t){var r=Er(n);return t?lr(r,t):r}function Da(n,t){return d(n,Ai(t,3),zr,!0)}function Fa(n,t){return d(n,Ai(t,3),Mr,!0)}function za(n,t){return null==n?n:ls(n,Ai(t),Ka)}function Ma(n,t){return null==n?n:hs(n,Ai(t),Ka)}function Ba(n,t){return n&&zr(n,Ai(t))}function Pa(n,t){return n&&Mr(n,Ai(t))}function $a(n){return null==n?[]:Br(n,Za(n))}function Ta(n){return null==n?[]:Br(n,Ka(n))}function qa(n,t,r){var e=null==n?V:Pr(n,t);return e===V?r:e}function Va(n,t){return null!=n&&Wi(n,t,qr)}function Ga(n,t){return null!=n&&Wi(n,t,Vr)}function Za(n){var t=Gi(n);if(!t&&!Yo(n))return ne(n);var r=zi(n),e=!!r,i=r||[],u=i.length;for(var o in n)!qr(n,o)||e&&("length"==o||Pi(o,u))||t&&"constructor"==o||i.push(o);return i}function Ka(n){for(var t=-1,r=Gi(n),e=te(n),i=e.length,u=zi(n),o=!!u,a=u||[],f=a.length;++t<i;){var c=e[t];o&&("length"==c||Pi(c,f))||"constructor"==c&&(r||!_c.call(n,c))||a.push(c)}return a}function Ya(n,t){var r={};return t=Ai(t,3),zr(n,function(n,e,i){r[t(n,e,i)]=n}),r}function Ja(n,t){var r={};return t=Ai(t,3),zr(n,function(n,e,i){r[e]=t(n,e,i)}),r}function Qa(n,t){return t=Ai(t),le(n,function(n,r){return!t(n,r)})}function Ha(n,t){return null==n?{}:le(n,Ai(t))}function Xa(n,t,r){t=Ti(t,n)?[t]:De(t);var e=-1,i=t.length;for(i||(n=V,i=1);++e<i;){var u=null==n?V:n[Xi(t[e])];u===V&&(e=i,u=r),n=ua(u)?u.call(n):u}return n}function nf(n,t,r){return null==n?n:we(n,t,r)}function tf(n,t,r,e){return e="function"==typeof e?e:V,null==n?n:we(n,t,r,e)}function rf(n){return E(n,Za(n))}function ef(n){return E(n,Ka(n))}function uf(n,t,r){var e=tl(n)||ka(n);if(t=Ai(t,4),null==r)if(e||fa(n)){var i=n.constructor;r=e?tl(n)?new i:[]:ua(i)?Er(Ni(n)):{}}else r={};return(e?u:zr)(n,function(n,e,i){return t(r,n,e,i)}),r}function of(n,t){return null==n||Ie(n,t)}function af(n,t,r){return null==n?n:Ce(n,t,Ue(r))}function ff(n,t,r,e){return e="function"==typeof e?e:V,null==n?n:Ce(n,t,Ue(r),e)}function cf(n){return n?O(n,Za(n)):[]}function sf(n){return null==n?[]:O(n,Ka(n))}function lf(n,t,r){return r===V&&(r=t,t=V),r!==V&&(r=La(r),r=r===r?r:0),t!==V&&(t=La(t),t=t===t?t:0),xr(La(n),t,r)}function hf(n,t,r){return t=La(t)||0,r===V?(r=t,t=0):r=La(r)||0,n=La(n),Gr(n,t,r)}function pf(n,t,r){if(r&&"boolean"!=typeof r&&$i(n,t,r)&&(t=r=V),r===V&&("boolean"==typeof t?(r=t,t=V):"boolean"==typeof n&&(r=n,n=V)),n===V&&t===V?(n=0,t=1):(n=La(n)||0,t===V?(t=n,n=0):t=La(t)||0),n>t){var e=n;n=t,t=e}if(r||n%1||t%1){var i=$c();return Bc(n+i*(t-n+Or("1e-"+((i+"").length-1))),t)}return de(n,t)}function vf(n){return Al(Wa(n).toLowerCase())}function _f(n){return n=Wa(n),n&&n.replace(At,R).replace(pr,"")}function df(n,t,r){n=Wa(n),t=Ae(t);var e=n.length;return r=r===V?e:xr(Ca(r),0,e),r-=t.length,r>=0&&n.indexOf(t,r)==r}function gf(n){return n=Wa(n),n&&it.test(n)?n.replace(rt,S):n}function yf(n){return n=Wa(n),n&&ht.test(n)?n.replace(lt,"\\$&"):n}function wf(n,t,r){n=Wa(n),t=Ca(t);var e=t?P(n):0;if(!t||e>=t)return n;var i=(t-e)/2;return pi(Wc(i),r)+n+pi(Sc(i),r)}function bf(n,t,r){n=Wa(n),t=Ca(t);var e=t?P(n):0;return t&&e<t?n+pi(t-e,r):n}function mf(n,t,r){n=Wa(n),t=Ca(t);var e=t?P(n):0;return t&&e<t?pi(t-e,r)+n:n}function xf(n,t,r){return r||null==t?t=0:t&&(t=+t),n=Wa(n).replace(pt,""),Pc(n,t||(bt.test(n)?16:10))}function jf(n,t,r){return t=(r?$i(n,t,r):t===V)?1:Ca(t),ye(Wa(n),t)}function kf(){var n=arguments,t=Wa(n[0]);return n.length<3?t:Tc.call(t,n[1],n[2])}function Ef(n,t,r){return r&&"number"!=typeof r&&$i(n,t,r)&&(t=r=V),(r=r===V?mn:r>>>0)?(n=Wa(n),n&&("string"==typeof t||null!=t&&!wa(t))&&(t=Ae(t),""==t&&dr.test(n))?Fe($(n),0,r):Vc.call(n,t,r)):[]}function Af(n,t,r){return n=Wa(n),r=xr(Ca(r),0,n.length),n.lastIndexOf(Ae(t),r)==r}function Of(n,t,r){var e=Ct.templateSettings;r&&$i(n,t,r)&&(t=V),n=Wa(n),t=al({},t,e,ar);var i,u,o=al({},t.imports,e.imports,ar),a=Za(o),f=O(o,a),c=0,s=t.interpolate||Ot,l="__p += '",h=cc((t.escape||Ot).source+"|"+s.source+"|"+(s===at?yt:Ot).source+"|"+(t.evaluate||Ot).source+"|$","g"),p="//# sourceURL="+("sourceURL"in t?t.sourceURL:"lodash.templateSources["+ ++wr+"]")+"\n";n.replace(h,function(t,r,e,o,a,f){return e||(e=o),l+=n.slice(c,f).replace(It,W),r&&(i=!0,l+="' +\n__e("+r+") +\n'"),a&&(u=!0,l+="';\n"+a+";\n__p += '"),e&&(l+="' +\n((__t = ("+e+")) == null ? '' : __t) +\n'"),c=f+t.length,t}),l+="';\n";var v=t.variable;v||(l="with (obj) {\n"+l+"\n}\n"),l=(u?l.replace(Hn,""):l).replace(Xn,"$1").replace(nt,"$1;"),l="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(u?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+l+"return __p\n}";var _=Ol(function(){return Function(a,p+"return "+l).apply(V,f)});if(_.source=l,ea(_))throw _;return _}function If(n){return Wa(n).toLowerCase()}function Cf(n){return Wa(n).toUpperCase()}function Nf(n,t,r){if(n=Wa(n),n&&(r||t===V))return n.replace(pt,"");if(!n||!(t=Ae(t)))return n;var e=$(n),i=$(t),u=I(e,i),o=C(e,i)+1;return Fe(e,u,o).join("")}function Lf(n,t,r){if(n=Wa(n),n&&(r||t===V))return n.replace(_t,"");if(!n||!(t=Ae(t)))return n;var e=$(n),i=C(e,$(t))+1;return Fe(e,0,i).join("")}function Rf(n,t,r){if(n=Wa(n),n&&(r||t===V))return n.replace(vt,"");if(!n||!(t=Ae(t)))return n;var e=$(n),i=I(e,$(t));return Fe(e,i).join("")}function Sf(n,t){var r=sn,e=ln;if(fa(t)){var i="separator"in t?t.separator:i;r="length"in t?Ca(t.length):r,e="omission"in t?Ae(t.omission):e}n=Wa(n);var u=n.length;if(dr.test(n)){var o=$(n);u=o.length}if(r>=u)return n;var a=r-P(e);if(a<1)return e;var f=o?Fe(o,0,a).join(""):n.slice(0,a);if(i===V)return f+e;if(o&&(a+=f.length-a),wa(i)){if(n.slice(a).search(i)){var c,s=f;for(i.global||(i=cc(i.source,Wa(wt.exec(i))+"g")),i.lastIndex=0;c=i.exec(s);)var l=c.index;f=f.slice(0,l===V?a:l)}}else if(n.indexOf(Ae(i),a)!=a){var h=f.lastIndexOf(i);h>-1&&(f=f.slice(0,h))}return f+e}function Wf(n){return n=Wa(n),n&&et.test(n)?n.replace(tt,T):n}function Uf(n,t,r){return n=Wa(n),t=r?V:t,t===V&&(t=gr.test(n)?_r:dt),n.match(t)||[]}function Df(n){var t=n?n.length:0,e=Ai();return n=t?l(n,function(n){if("function"!=typeof n[1])throw new sc(K);return[e(n[0]),n[1]]}):[],Do(function(e){for(var i=-1;++i<t;){var u=n[i];if(r(u[0],this,e))return r(u[1],this,e)}})}function Ff(n){return kr(jr(n,!0))}function zf(n){return function(){return n}}function Mf(n){return n}function Bf(n){return Xr("function"==typeof n?n:jr(n,!0))}function Pf(n){return ie(jr(n,!0))}function $f(n,t){return ue(n,jr(t,!0))}function Tf(n,t,r){var e=Za(t),i=Br(t,e);null!=r||fa(t)&&(i.length||!e.length)||(r=t,t=n,n=this,i=Br(t,Za(t)));var o=!(fa(r)&&"chain"in r&&!r.chain),a=ua(n);return u(i,function(r){var e=t[r];n[r]=e,a&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__),i=r.__actions__=Je(this.__actions__);return i.push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,h([this.value()],arguments))})}),n}function qf(){return Dr._===this&&(Dr._=wc),this}function Vf(){}function Gf(n){return n=Ca(n),Do(function(t){return fe(t,n)})}function Zf(n){return Ti(n)?he(Xi(n)):pe(n)}function Kf(n){return function(t){return null==n?V:Pr(n,t)}}function Yf(n,t){if(n=Ca(n),n<1||n>yn)return[];var r=mn,e=Bc(n,mn);t=Ai(t),n-=mn;for(var i=k(e,t);++r<n;)t(r);return i}function Jf(n){return tl(n)?l(n,Xi):ja(n)?[n]:Je(ws(n))}function Qf(n){var t=++dc;return Wa(n)+t}function Hf(n){return n&&n.length?Rr(n,Mf,Tr):V}function Xf(n,t){return n&&n.length?Rr(n,Ai(t),Tr):V}function nc(n){return b(n,Mf)}function tc(n,t){return b(n,Ai(t))}function rc(n){return n&&n.length?Rr(n,Mf,re):V}function ec(n,t){return n&&n.length?Rr(n,Ai(t),re):V}function ic(n){return n&&n.length?j(n,Mf):0}function uc(n,t){return n&&n.length?j(n,Ai(t)):0}N=N?Fr.defaults({},N,Fr.pick(Dr,yr)):Dr;var oc=N.Date,ac=N.Error,fc=N.Math,cc=N.RegExp,sc=N.TypeError,lc=N.Array.prototype,hc=N.Object.prototype,pc=N.String.prototype,vc=N.Function.prototype.toString,_c=hc.hasOwnProperty,dc=0,gc=vc.call(Object),yc=hc.toString,wc=Dr._,bc=cc("^"+vc.call(_c).replace(lt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),mc=Lr?N.Buffer:V,xc=N.Reflect,jc=N.Symbol,kc=N.Uint8Array,Ec=N.clearTimeout,Ac=xc?xc.enumerate:V,Oc=Object.getOwnPropertySymbols,Ic="symbol"==typeof(Ic=jc&&jc.iterator)?Ic:V,Cc=Object.create,Nc=hc.propertyIsEnumerable,Lc=N.setTimeout,Rc=lc.splice,Sc=fc.ceil,Wc=fc.floor,Uc=Object.getPrototypeOf,Dc=N.isFinite,Fc=lc.join,zc=Object.keys,Mc=fc.max,Bc=fc.min,Pc=N.parseInt,$c=fc.random,Tc=pc.replace,qc=lc.reverse,Vc=pc.split,Gc=Ii(N,"DataView"),Zc=Ii(N,"Map"),Kc=Ii(N,"Promise"),Yc=Ii(N,"Set"),Jc=Ii(N,"WeakMap"),Qc=Ii(Object,"create"),Hc=Jc&&new Jc,Xc=!Nc.call({valueOf:1},"valueOf"),ns={},ts=nu(Gc),rs=nu(Zc),es=nu(Kc),is=nu(Yc),us=nu(Jc),os=jc?jc.prototype:V,as=os?os.valueOf:V,fs=os?os.toString:V;Ct.templateSettings={escape:ut,evaluate:ot,interpolate:at,variable:"",imports:{_:Ct}},Ct.prototype=Nt.prototype,Ct.prototype.constructor=Ct,Lt.prototype=Er(Nt.prototype),Lt.prototype.constructor=Lt,Rt.prototype=Er(Nt.prototype),Rt.prototype.constructor=Rt,Dt.prototype=Qc?Qc(null):hc,Pt.prototype.clear=$t,Pt.prototype["delete"]=Tt,Pt.prototype.get=qt,Pt.prototype.has=Vt,Pt.prototype.set=Gt,Zt.prototype.push=Yt,Jt.prototype.clear=Qt,Jt.prototype["delete"]=Ht,Jt.prototype.get=Xt,Jt.prototype.has=nr,Jt.prototype.set=tr;var cs=ti(zr),ss=ti(Mr,!0),ls=ri(),hs=ri(!0);Ac&&!Nc.call({valueOf:1},"valueOf")&&(te=function(n){return F(Ac(n))});var ps=Hc?function(n,t){return Hc.set(n,t),n}:Mf,vs=Yc&&1/B(new Yc([,-0]))[1]==gn?function(n){return new Yc(n)}:Vf,_s=Hc?function(n){return Hc.get(n)}:Vf,ds=he("length");Oc||(Li=function(){return[]});var gs=Oc?function(n){for(var t=[];n;)h(t,Li(n)),n=Ni(n);return t}:Li;(Gc&&Ri(new Gc(new ArrayBuffer(1)))!=$n||Zc&&Ri(new Zc)!=Ln||Kc&&Ri(Kc.resolve())!=Wn||Yc&&Ri(new Yc)!=Dn||Jc&&Ri(new Jc)!=Mn)&&(Ri=function(n){var t=yc.call(n),r=t==Sn?n.constructor:V,e=r?nu(r):V;if(e)switch(e){case ts:return $n;case rs:return Ln;case es:return Wn;case is:return Dn;case us:return Mn}return t});var ys=function(){var n=0,t=0;return function(r,e){var i=qs(),u=pn-(i-t);if(t=i,u>0){if(++n>=hn)return r}else n=0;return ps(r,e)}}(),ws=So(function(n){var t=[];return Wa(n).replace(st,function(n,r,e,i){t.push(e?i.replace(gt,"$1"):r||n)}),t}),bs=Do(function(n,t){return Jo(n)?Cr(n,Ur(t,1,Jo,!0)):[]}),ms=Do(function(n,t){var r=bu(t);return Jo(r)&&(r=V),Jo(n)?Cr(n,Ur(t,1,Jo,!0),Ai(r)):[]}),xs=Do(function(n,t){var r=bu(t);return Jo(r)&&(r=V),Jo(n)?Cr(n,Ur(t,1,Jo,!0),V,r):[]}),js=Do(function(n){var t=l(n,We);return t.length&&t[0]===n[0]?Zr(t):[]}),ks=Do(function(n){var t=bu(n),r=l(n,We);return t===bu(r)?t=V:r.pop(),r.length&&r[0]===n[0]?Zr(r,Ai(t)):[]}),Es=Do(function(n){var t=bu(n),r=l(n,We);return t===bu(r)?t=V:r.pop(),r.length&&r[0]===n[0]?Zr(r,V,t):[]}),As=Do(ju),Os=Do(function(n,t){t=Ur(t,1);var r=n?n.length:0,e=vr(n,t);return _e(n,l(t,function(n){return Pi(n,r)?+n:n}).sort(Ge)),e}),Is=Do(function(n){return Oe(Ur(n,1,Jo,!0))}),Cs=Do(function(n){var t=bu(n);return Jo(t)&&(t=V),Oe(Ur(n,1,Jo,!0),Ai(t))}),Ns=Do(function(n){var t=bu(n);return Jo(t)&&(t=V),Oe(Ur(n,1,Jo,!0),V,t)}),Ls=Do(function(n,t){return Jo(n)?Cr(n,t):[]}),Rs=Do(function(n){return Re(f(n,Jo))}),Ss=Do(function(n){var t=bu(n);return Jo(t)&&(t=V),Re(f(n,Jo),Ai(t))}),Ws=Do(function(n){var t=bu(n);return Jo(t)&&(t=V),Re(f(n,Jo),V,t)}),Us=Do(Vu),Ds=Do(function(n){var t=n.length,r=t>1?n[t-1]:V;return r="function"==typeof r?(n.pop(),r):V,Gu(n,r)}),Fs=Do(function(n){n=Ur(n,1);var t=n.length,r=t?n[0]:0,e=this.__wrapped__,i=function(t){return vr(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Rt&&Pi(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:Qu,args:[i],thisArg:V}),new Lt(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(V),n})):this.thru(i)}),zs=Xe(function(n,t,r){_c.call(n,r)?++n[r]:n[r]=1}),Ms=Xe(function(n,t,r){_c.call(n,r)?n[r].push(t):n[r]=[t]}),Bs=Do(function(n,t,e){var i=-1,u="function"==typeof t,o=Ti(t),a=Yo(n)?Array(n.length):[];return cs(n,function(n){var f=u?t:o&&null!=n?n[t]:V;a[++i]=f?r(f,n,e):Yr(n,t,e)}),a}),Ps=Xe(function(n,t,r){n[r]=t}),$s=Xe(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ts=Do(function(n,t){if(null==n)return[];var r=t.length;return r>1&&$i(n,t[0],t[1])?t=[]:r>2&&$i(t[0],t[1],t[2])&&(t=[t[0]]),t=1==t.length&&tl(t[0])?t[0]:Ur(t,1,Bi),ce(n,t,[])}),qs=oc.now,Vs=Do(function(n,t,r){var e=Q;if(r.length){var i=M(r,Ci(Vs));e|=rn}return wi(n,e,t,r,i)}),Gs=Do(function(n,t,r){var e=Q|H;if(r.length){var i=M(r,Ci(Gs));e|=rn}return wi(t,e,n,r,i)}),Zs=Do(function(n,t){return Ar(n,1,t)}),Ks=Do(function(n,t,r){return Ar(n,La(t)||0,r)});So.Cache=Pt;var Ys=Do(function(n,t){t=1==t.length&&tl(t[0])?l(t[0],A(Ai())):l(Ur(t,1,Bi),A(Ai()));var e=t.length;return Do(function(i){for(var u=-1,o=Bc(i.length,e);++u<o;)i[u]=t[u].call(this,i[u]);return r(n,this,i)})}),Js=Do(function(n,t){var r=M(t,Ci(Js));return wi(n,rn,V,t,r)}),Qs=Do(function(n,t){var r=M(t,Ci(Qs));return wi(n,en,V,t,r)}),Hs=Do(function(n,t){return wi(n,on,V,V,V,Ur(t,1))}),Xs=di(Tr),nl=di(function(n,t){return n>=t}),tl=Array.isArray,rl=mc?function(n){return n instanceof mc}:zf(!1),el=di(re),il=di(function(n,t){return n<=t}),ul=ni(function(n,t){if(Xc||Gi(t)||Yo(t))return void Qe(t,Za(t),n);for(var r in t)_c.call(t,r)&&cr(n,r,t[r])}),ol=ni(function(n,t){if(Xc||Gi(t)||Yo(t))return void Qe(t,Ka(t),n);for(var r in t)cr(n,r,t[r])}),al=ni(function(n,t,r,e){Qe(t,Ka(t),n,e)}),fl=ni(function(n,t,r,e){Qe(t,Za(t),n,e)}),cl=Do(function(n,t){return vr(n,Ur(t,1))}),sl=Do(function(n){return n.push(V,ar),r(al,V,n)}),ll=Do(function(n){return n.push(V,Ji),r(dl,V,n)}),hl=si(function(n,t,r){n[t]=r},zf(Mf)),pl=si(function(n,t,r){_c.call(n,t)?n[t].push(r):n[t]=[r]},Ai),vl=Do(Yr),_l=ni(function(n,t,r){oe(n,t,r)}),dl=ni(function(n,t,r,e){oe(n,t,r,e)}),gl=Do(function(n,t){return null==n?{}:(t=l(Ur(t,1),Xi),se(n,Cr(ki(n),t)))}),yl=Do(function(n,t){return null==n?{}:se(n,l(Ur(t,1),Xi))}),wl=ui(function(n,t,r){return t=t.toLowerCase(),n+(r?vf(t):t)}),bl=ui(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),ml=ui(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),xl=ii("toLowerCase"),jl=ui(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),kl=ui(function(n,t,r){return n+(r?" ":"")+Al(t)}),El=ui(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Al=ii("toUpperCase"),Ol=Do(function(n,t){try{return r(n,V,t)}catch(e){return ea(e)?e:new ac(e)}}),Il=Do(function(n,t){return u(Ur(t,1),function(t){t=Xi(t),n[t]=Vs(n[t],n)}),n}),Cl=fi(),Nl=fi(!0),Ll=Do(function(n,t){return function(r){return Yr(r,n,t)}}),Rl=Do(function(n,t){return function(r){return Yr(n,r,t)}}),Sl=hi(l),Wl=hi(a),Ul=hi(_),Dl=_i(),Fl=_i(!0),zl=li(function(n,t){return n+t}),Ml=yi("ceil"),Bl=li(function(n,t){return n/t}),Pl=yi("floor"),$l=li(function(n,t){return n*t}),Tl=yi("round"),ql=li(function(n,t){return n-t});return Ct.after=Ao,Ct.ary=Oo,Ct.assign=ul,Ct.assignIn=ol,Ct.assignInWith=al,Ct.assignWith=fl,Ct.at=cl,Ct.before=Io,Ct.bind=Vs,Ct.bindAll=Il,Ct.bindKey=Gs,Ct.castArray=Po,Ct.chain=Yu,Ct.chunk=ru,Ct.compact=eu,Ct.concat=iu,Ct.cond=Df,Ct.conforms=Ff,Ct.constant=zf,Ct.countBy=zs,Ct.create=Ua,Ct.curry=Co,Ct.curryRight=No,Ct.debounce=Lo,Ct.defaults=sl,Ct.defaultsDeep=ll,Ct.defer=Zs,Ct.delay=Ks,Ct.difference=bs,Ct.differenceBy=ms,Ct.differenceWith=xs,Ct.drop=uu,Ct.dropRight=ou,Ct.dropRightWhile=au,Ct.dropWhile=fu,Ct.fill=cu,Ct.filter=oo,Ct.flatMap=co,Ct.flatMapDeep=so,Ct.flatMapDepth=lo,Ct.flatten=hu,Ct.flattenDeep=pu,Ct.flattenDepth=vu,Ct.flip=Ro,Ct.flow=Cl,Ct.flowRight=Nl,Ct.fromPairs=_u,Ct.functions=$a,Ct.functionsIn=Ta,Ct.groupBy=Ms,Ct.initial=yu,Ct.intersection=js,Ct.intersectionBy=ks,Ct.intersectionWith=Es,Ct.invert=hl,Ct.invertBy=pl,Ct.invokeMap=Bs,Ct.iteratee=Bf,Ct.keyBy=Ps,Ct.keys=Za,Ct.keysIn=Ka,Ct.map=_o,Ct.mapKeys=Ya,Ct.mapValues=Ja,Ct.matches=Pf,Ct.matchesProperty=$f,Ct.memoize=So,Ct.merge=_l,Ct.mergeWith=dl,Ct.method=Ll,Ct.methodOf=Rl,Ct.mixin=Tf,Ct.negate=Wo,Ct.nthArg=Gf,Ct.omit=gl,Ct.omitBy=Qa,Ct.once=Uo,Ct.orderBy=go,Ct.over=Sl,Ct.overArgs=Ys,Ct.overEvery=Wl,Ct.overSome=Ul,Ct.partial=Js,Ct.partialRight=Qs,Ct.partition=$s,Ct.pick=yl,Ct.pickBy=Ha,Ct.property=Zf,Ct.propertyOf=Kf,Ct.pull=As,Ct.pullAll=ju,Ct.pullAllBy=ku,Ct.pullAllWith=Eu,Ct.pullAt=Os,Ct.range=Dl,Ct.rangeRight=Fl,Ct.rearg=Hs,Ct.reject=bo,Ct.remove=Au,Ct.rest=Do,Ct.reverse=Ou,Ct.sampleSize=xo,Ct.set=nf,Ct.setWith=tf,Ct.shuffle=jo,Ct.slice=Iu,Ct.sortBy=Ts,Ct.sortedUniq=Uu,Ct.sortedUniqBy=Du,Ct.split=Ef,Ct.spread=Fo,Ct.tail=Fu,Ct.take=zu,Ct.takeRight=Mu,Ct.takeRightWhile=Bu,Ct.takeWhile=Pu,Ct.tap=Ju,Ct.throttle=zo,Ct.thru=Qu,Ct.toArray=Ia,Ct.toPairs=rf,Ct.toPairsIn=ef,Ct.toPath=Jf,Ct.toPlainObject=Ra,Ct.transform=uf,Ct.unary=Mo,Ct.union=Is,Ct.unionBy=Cs,Ct.unionWith=Ns,Ct.uniq=$u,Ct.uniqBy=Tu,Ct.uniqWith=qu,Ct.unset=of,Ct.unzip=Vu,Ct.unzipWith=Gu,Ct.update=af,Ct.updateWith=ff,Ct.values=cf,Ct.valuesIn=sf,Ct.without=Ls,Ct.words=Uf,Ct.wrap=Bo,Ct.xor=Rs,Ct.xorBy=Ss,Ct.xorWith=Ws,Ct.zip=Us,Ct.zipObject=Zu,Ct.zipObjectDeep=Ku,Ct.zipWith=Ds,Ct.entries=rf,Ct.entriesIn=ef,Ct.extend=ol,Ct.extendWith=al,Tf(Ct,Ct),Ct.add=zl,Ct.attempt=Ol,Ct.camelCase=wl,Ct.capitalize=vf,Ct.ceil=Ml,Ct.clamp=lf,Ct.clone=$o,Ct.cloneDeep=qo,Ct.cloneDeepWith=Vo,Ct.cloneWith=To,Ct.deburr=_f,Ct.divide=Bl,Ct.endsWith=df,Ct.eq=Go,Ct.escape=gf,Ct.escapeRegExp=yf,Ct.every=uo,Ct.find=ao,Ct.findIndex=su,Ct.findKey=Da,Ct.findLast=fo,Ct.findLastIndex=lu,Ct.findLastKey=Fa,Ct.floor=Pl,Ct.forEach=ho,Ct.forEachRight=po,Ct.forIn=za,Ct.forInRight=Ma,Ct.forOwn=Ba,Ct.forOwnRight=Pa,Ct.get=qa,Ct.gt=Xs,Ct.gte=nl,Ct.has=Va,Ct.hasIn=Ga,Ct.head=du,Ct.identity=Mf,Ct.includes=vo,Ct.indexOf=gu,Ct.inRange=hf,Ct.invoke=vl,Ct.isArguments=Zo,Ct.isArray=tl,Ct.isArrayBuffer=Ko,Ct.isArrayLike=Yo,Ct.isArrayLikeObject=Jo,Ct.isBoolean=Qo,Ct.isBuffer=rl,Ct.isDate=Ho,Ct.isElement=Xo,Ct.isEmpty=na,Ct.isEqual=ta,Ct.isEqualWith=ra,Ct.isError=ea,Ct.isFinite=ia,Ct.isFunction=ua,Ct.isInteger=oa,Ct.isLength=aa,Ct.isMap=sa,Ct.isMatch=la,Ct.isMatchWith=ha,Ct.isNaN=pa,Ct.isNative=va,Ct.isNil=da,Ct.isNull=_a,Ct.isNumber=ga,Ct.isObject=fa,Ct.isObjectLike=ca,Ct.isPlainObject=ya,Ct.isRegExp=wa,Ct.isSafeInteger=ba,Ct.isSet=ma,Ct.isString=xa,Ct.isSymbol=ja,Ct.isTypedArray=ka,Ct.isUndefined=Ea,Ct.isWeakMap=Aa,Ct.isWeakSet=Oa,Ct.join=wu,Ct.kebabCase=bl,Ct.last=bu,Ct.lastIndexOf=mu,Ct.lowerCase=ml,Ct.lowerFirst=xl,Ct.lt=el,Ct.lte=il,Ct.max=Hf,Ct.maxBy=Xf,Ct.mean=nc,Ct.meanBy=tc,Ct.min=rc,Ct.minBy=ec,Ct.multiply=$l,Ct.nth=xu,Ct.noConflict=qf,Ct.noop=Vf,Ct.now=qs,Ct.pad=wf,Ct.padEnd=bf,Ct.padStart=mf,Ct.parseInt=xf,Ct.random=pf,Ct.reduce=yo,Ct.reduceRight=wo,Ct.repeat=jf,Ct.replace=kf,Ct.result=Xa,Ct.round=Tl,Ct.runInContext=q,Ct.sample=mo,Ct.size=ko,Ct.snakeCase=jl,Ct.some=Eo,Ct.sortedIndex=Cu,Ct.sortedIndexBy=Nu,Ct.sortedIndexOf=Lu,Ct.sortedLastIndex=Ru,Ct.sortedLastIndexBy=Su,Ct.sortedLastIndexOf=Wu,Ct.startCase=kl,Ct.startsWith=Af,Ct.subtract=ql,Ct.sum=ic,Ct.sumBy=uc,Ct.template=Of,Ct.times=Yf,Ct.toInteger=Ca,Ct.toLength=Na,Ct.toLower=If,Ct.toNumber=La,Ct.toSafeInteger=Sa,Ct.toString=Wa,Ct.toUpper=Cf,Ct.trim=Nf,Ct.trimEnd=Lf,Ct.trimStart=Rf,Ct.truncate=Sf,Ct.unescape=Wf,Ct.uniqueId=Qf,Ct.upperCase=El,Ct.upperFirst=Al,Ct.each=ho,Ct.eachRight=po,Ct.first=du,Tf(Ct,function(){var n={};return zr(Ct,function(t,r){_c.call(Ct.prototype,r)||(n[r]=t)}),n}(),{chain:!1}),Ct.VERSION=G,u(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){Ct[n].placeholder=Ct}),u(["drop","take"],function(n,t){Rt.prototype[n]=function(r){var e=this.__filtered__;if(e&&!t)return new Rt(this);r=r===V?1:Mc(Ca(r),0);var i=this.clone();return e?i.__takeCount__=Bc(r,i.__takeCount__):i.__views__.push({size:Bc(r,mn),type:n+(i.__dir__<0?"Right":"")}),i},Rt.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),u(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==vn||r==dn;Rt.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:Ai(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),u(["head","last"],function(n,t){var r="take"+(t?"Right":"");Rt.prototype[n]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Rt.prototype[n]=function(){return this.__filtered__?new Rt(this):this[r](1)}}),Rt.prototype.compact=function(){return this.filter(Mf)},Rt.prototype.find=function(n){return this.filter(n).head()},Rt.prototype.findLast=function(n){return this.reverse().find(n)},Rt.prototype.invokeMap=Do(function(n,t){return"function"==typeof n?new Rt(this):this.map(function(r){return Yr(r,n,t)})}),Rt.prototype.reject=function(n){return n=Ai(n,3),this.filter(function(t){return!n(t)})},Rt.prototype.slice=function(n,t){n=Ca(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Rt(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==V&&(t=Ca(t),r=t<0?r.dropRight(-t):r.take(t-n)),r)},Rt.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Rt.prototype.toArray=function(){return this.take(mn)},zr(Rt.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),i=Ct[e?"take"+("last"==t?"Right":""):t],u=e||/^find/.test(t);i&&(Ct.prototype[t]=function(){var t=this.__wrapped__,o=e?[1]:arguments,a=t instanceof Rt,f=o[0],c=a||tl(t),s=function(n){var t=i.apply(Ct,h([n],o));return e&&l?t[0]:t};c&&r&&"function"==typeof f&&1!=f.length&&(a=c=!1);var l=this.__chain__,p=!!this.__actions__.length,v=u&&!l,_=a&&!p;if(!u&&c){t=_?t:new Rt(this);var d=n.apply(t,o);return d.__actions__.push({func:Qu,args:[s],thisArg:V}),new Lt(d,l)}return v&&_?n.apply(this,o):(d=this.thru(s),v?e?d.value()[0]:d.value():d)})}),u(["pop","push","shift","sort","splice","unshift"],function(n){var t=lc[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);Ct.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var i=this.value();return t.apply(tl(i)?i:[],n)}return this[r](function(r){return t.apply(tl(r)?r:[],n)})}}),zr(Rt.prototype,function(n,t){var r=Ct[t];if(r){var e=r.name+"",i=ns[e]||(ns[e]=[]);i.push({name:t,func:r})}}),ns[ci(V,H).name]=[{name:"wrapper",func:V}],Rt.prototype.clone=St,Rt.prototype.reverse=Wt,Rt.prototype.value=Ut,Ct.prototype.at=Fs,Ct.prototype.chain=Hu,Ct.prototype.commit=Xu,Ct.prototype.next=no,Ct.prototype.plant=ro,Ct.prototype.reverse=eo,Ct.prototype.toJSON=Ct.prototype.valueOf=Ct.prototype.value=io,Ic&&(Ct.prototype[Ic]=to),Ct}var V,G="4.11.2",Z=200,K="Expected a function",Y="__lodash_hash_undefined__",J="__lodash_placeholder__",Q=1,H=2,X=4,nn=8,tn=16,rn=32,en=64,un=128,on=256,an=512,fn=1,cn=2,sn=30,ln="...",hn=150,pn=16,vn=1,_n=2,dn=3,gn=1/0,yn=9007199254740991,wn=1.7976931348623157e308,bn=NaN,mn=4294967295,xn=mn-1,jn=mn>>>1,kn="[object Arguments]",En="[object Array]",An="[object Boolean]",On="[object Date]",In="[object Error]",Cn="[object Function]",Nn="[object GeneratorFunction]",Ln="[object Map]",Rn="[object Number]",Sn="[object Object]",Wn="[object Promise]",Un="[object RegExp]",Dn="[object Set]",Fn="[object String]",zn="[object Symbol]",Mn="[object WeakMap]",Bn="[object WeakSet]",Pn="[object ArrayBuffer]",$n="[object DataView]",Tn="[object Float32Array]",qn="[object Float64Array]",Vn="[object Int8Array]",Gn="[object Int16Array]",Zn="[object Int32Array]",Kn="[object Uint8Array]",Yn="[object Uint8ClampedArray]",Jn="[object Uint16Array]",Qn="[object Uint32Array]",Hn=/\b__p \+= '';/g,Xn=/\b(__p \+=) '' \+/g,nt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,tt=/&(?:amp|lt|gt|quot|#39|#96);/g,rt=/[&<>"'`]/g,et=RegExp(tt.source),it=RegExp(rt.source),ut=/<%-([\s\S]+?)%>/g,ot=/<%([\s\S]+?)%>/g,at=/<%=([\s\S]+?)%>/g,ft=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ct=/^\w*$/,st=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g,lt=/[\\^$.*+?()[\]{}|]/g,ht=RegExp(lt.source),pt=/^\s+|\s+$/g,vt=/^\s+/,_t=/\s+$/,dt=/[a-zA-Z0-9]+/g,gt=/\\(\\)?/g,yt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,wt=/\w*$/,bt=/^0x/i,mt=/^[-+]0x[0-9a-f]+$/i,xt=/^0b[01]+$/i,jt=/^\[object .+?Constructor\]$/,kt=/^0o[0-7]+$/i,Et=/^(?:0|[1-9]\d*)$/,At=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Ot=/($^)/,It=/['\n\r\u2028\u2029\\]/g,Ct="\\ud800-\\udfff",Nt="\\u0300-\\u036f\\ufe20-\\ufe23",Lt="\\u20d0-\\u20f0",Rt="\\u2700-\\u27bf",St="a-z\\xdf-\\xf6\\xf8-\\xff",Wt="\\xac\\xb1\\xd7\\xf7",Ut="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Dt="\\u2000-\\u206f",Ft=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",zt="A-Z\\xc0-\\xd6\\xd8-\\xde",Mt="\\ufe0e\\ufe0f",Bt=Wt+Ut+Dt+Ft,Pt="['’]",$t="["+Ct+"]",Tt="["+Bt+"]",qt="["+Nt+Lt+"]",Vt="\\d+",Gt="["+Rt+"]",Zt="["+St+"]",Kt="[^"+Ct+Bt+Vt+Rt+St+zt+"]",Yt="\\ud83c[\\udffb-\\udfff]",Jt="(?:"+qt+"|"+Yt+")",Qt="[^"+Ct+"]",Ht="(?:\\ud83c[\\udde6-\\uddff]){2}",Xt="[\\ud800-\\udbff][\\udc00-\\udfff]",nr="["+zt+"]",tr="\\u200d",rr="(?:"+Zt+"|"+Kt+")",er="(?:"+nr+"|"+Kt+")",ir="(?:"+Pt+"(?:d|ll|m|re|s|t|ve))?",ur="(?:"+Pt+"(?:D|LL|M|RE|S|T|VE))?",or=Jt+"?",ar="["+Mt+"]?",fr="(?:"+tr+"(?:"+[Qt,Ht,Xt].join("|")+")"+ar+or+")*",cr=ar+or+fr,sr="(?:"+[Gt,Ht,Xt].join("|")+")"+cr,lr="(?:"+[Qt+qt+"?",qt,Ht,Xt,$t].join("|")+")",hr=RegExp(Pt,"g"),pr=RegExp(qt,"g"),vr=RegExp(Yt+"(?="+Yt+")|"+lr+cr,"g"),_r=RegExp([nr+"?"+Zt+"+"+ir+"(?="+[Tt,nr,"$"].join("|")+")",er+"+"+ur+"(?="+[Tt,nr+rr,"$"].join("|")+")",nr+"?"+rr+"+"+ir,nr+"+"+ur,Vt,sr].join("|"),"g"),dr=RegExp("["+tr+Ct+Nt+Lt+Mt+"]"),gr=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,yr=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","Reflect","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],wr=-1,br={};
 br[Tn]=br[qn]=br[Vn]=br[Gn]=br[Zn]=br[Kn]=br[Yn]=br[Jn]=br[Qn]=!0,br[kn]=br[En]=br[Pn]=br[An]=br[$n]=br[On]=br[In]=br[Cn]=br[Ln]=br[Rn]=br[Sn]=br[Un]=br[Dn]=br[Fn]=br[Mn]=!1;var mr={};mr[kn]=mr[En]=mr[Pn]=mr[$n]=mr[An]=mr[On]=mr[Tn]=mr[qn]=mr[Vn]=mr[Gn]=mr[Zn]=mr[Ln]=mr[Rn]=mr[Sn]=mr[Un]=mr[Dn]=mr[Fn]=mr[zn]=mr[Kn]=mr[Yn]=mr[Jn]=mr[Qn]=!0,mr[In]=mr[Cn]=mr[Mn]=!1;var xr={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"},jr={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},kr={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},Er={"function":!0,object:!0},Ar={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Or=parseFloat,Ir=parseInt,Cr=Er[typeof exports]&&exports&&!exports.nodeType?exports:V,Nr=Er[typeof module]&&module&&!module.nodeType?module:V,Lr=Nr&&Nr.exports===Cr?Cr:V,Rr=N(Cr&&Nr&&"object"==typeof global&&global),Sr=N(Er[typeof self]&&self),Wr=N(Er[typeof window]&&window),Ur=N(Er[typeof this]&&this),Dr=Rr||Wr!==(Ur&&Ur.window)&&Wr||Sr||Ur||Function("return this")(),Fr=q();(Wr||Sr||{})._=Fr,"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return Fr}):Cr&&Nr?(Lr&&((Nr.exports=Fr)._=Fr),Cr._=Fr):Dr._=Fr}).call(this),function(n){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.graphlib=n()}}(function(){return function n(t,r,e){function i(o,a){if(!r[o]){if(!t[o]){var f="function"==typeof require&&require;if(!a&&f)return f(o,!0);if(u)return u(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var s=r[o]={exports:{}};t[o][0].call(s.exports,function(n){var r=t[o][1][n];return i(r?r:n)},s,s.exports,n,t,r,e)}return r[o].exports}for(var u="function"==typeof require&&require,o=0;o<e.length;o++)i(e[o]);return i}({1:[function(n,t,r){var e=n("./lib");t.exports={Graph:e.Graph,json:n("./lib/json"),alg:n("./lib/alg"),version:e.version}},{"./lib":17,"./lib/alg":8,"./lib/json":18}],2:[function(n,t,r){function e(n){function t(u){i.has(e,u)||(e[u]=!0,r.push(u),i.each(n.successors(u),t),i.each(n.predecessors(u),t))}var r,e={},u=[];return i.each(n.nodes(),function(n){r=[],t(n),r.length&&u.push(r)}),u}var i=n("../lodash");t.exports=e},{"../lodash":19}],3:[function(n,t,r){function e(n,t,r){u.isArray(t)||(t=[t]);var e=(n.isDirected()?n.successors:n.neighbors).bind(n),o=[],a={};return u.each(t,function(t){if(!n.hasNode(t))throw new Error("Graph does not have node: "+t);i(n,t,"post"===r,a,e,o)}),o}function i(n,t,r,e,o,a){u.has(e,t)||(e[t]=!0,r||a.push(t),u.each(o(t),function(t){i(n,t,r,e,o,a)}),r&&a.push(t))}var u=n("../lodash");t.exports=e},{"../lodash":19}],4:[function(n,t,r){function e(n,t,r){return u.transform(n.nodes(),function(e,u){e[u]=i(n,u,t,r)},{})}var i=n("./dijkstra"),u=n("../lodash");t.exports=e},{"../lodash":19,"./dijkstra":5}],5:[function(n,t,r){function e(n,t,r,e){return i(n,String(t),r||a,e||function(t){return n.outEdges(t)})}function i(n,t,r,e){var i,u,a={},f=new o,c=function(n){var t=n.v!==i?n.v:n.w,e=a[t],o=r(n),c=u.distance+o;if(o<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+n+" Weight: "+o);c<e.distance&&(e.distance=c,e.predecessor=i,f.decrease(t,c))};for(n.nodes().forEach(function(n){var r=n===t?0:Number.POSITIVE_INFINITY;a[n]={distance:r},f.add(n,r)});f.size()>0&&(i=f.removeMin(),u=a[i],u.distance!==Number.POSITIVE_INFINITY);)e(i).forEach(c);return a}var u=n("../lodash"),o=n("../data/priority-queue");t.exports=e;var a=u.constant(1)},{"../data/priority-queue":15,"../lodash":19}],6:[function(n,t,r){function e(n){return i.filter(u(n),function(t){return t.length>1||1===t.length&&n.hasEdge(t[0],t[0])})}var i=n("../lodash"),u=n("./tarjan");t.exports=e},{"../lodash":19,"./tarjan":13}],7:[function(n,t,r){function e(n,t,r){return i(n,t||o,r||function(t){return n.outEdges(t)})}function i(n,t,r){var e={},i=n.nodes();return i.forEach(function(n){e[n]={},e[n][n]={distance:0},i.forEach(function(t){n!==t&&(e[n][t]={distance:Number.POSITIVE_INFINITY})}),r(n).forEach(function(r){var i=r.v===n?r.w:r.v,u=t(r);e[n][i]={distance:u,predecessor:n}})}),i.forEach(function(n){var t=e[n];i.forEach(function(r){var u=e[r];i.forEach(function(r){var e=u[n],i=t[r],o=u[r],a=e.distance+i.distance;a<o.distance&&(o.distance=a,o.predecessor=i.predecessor)})})}),e}var u=n("../lodash");t.exports=e;var o=u.constant(1)},{"../lodash":19}],8:[function(n,t,r){t.exports={components:n("./components"),dijkstra:n("./dijkstra"),dijkstraAll:n("./dijkstra-all"),findCycles:n("./find-cycles"),floydWarshall:n("./floyd-warshall"),isAcyclic:n("./is-acyclic"),postorder:n("./postorder"),preorder:n("./preorder"),prim:n("./prim"),tarjan:n("./tarjan"),topsort:n("./topsort")}},{"./components":2,"./dijkstra":5,"./dijkstra-all":4,"./find-cycles":6,"./floyd-warshall":7,"./is-acyclic":9,"./postorder":10,"./preorder":11,"./prim":12,"./tarjan":13,"./topsort":14}],9:[function(n,t,r){function e(n){try{i(n)}catch(t){if(t instanceof i.CycleException)return!1;throw t}return!0}var i=n("./topsort");t.exports=e},{"./topsort":14}],10:[function(n,t,r){function e(n,t){return i(n,t,"post")}var i=n("./dfs");t.exports=e},{"./dfs":3}],11:[function(n,t,r){function e(n,t){return i(n,t,"pre")}var i=n("./dfs");t.exports=e},{"./dfs":3}],12:[function(n,t,r){function e(n,t){function r(n){var r=n.v===e?n.w:n.v,i=c.priority(r);if(void 0!==i){var u=t(n);u<i&&(f[r]=e,c.decrease(r,u))}}var e,a=new u,f={},c=new o;if(0===n.nodeCount())return a;i.each(n.nodes(),function(n){c.add(n,Number.POSITIVE_INFINITY),a.setNode(n)}),c.decrease(n.nodes()[0],0);for(var s=!1;c.size()>0;){if(e=c.removeMin(),i.has(f,e))a.setEdge(e,f[e]);else{if(s)throw new Error("Input graph is not connected: "+n);s=!0}n.nodeEdges(e).forEach(r)}return a}var i=n("../lodash"),u=n("../graph"),o=n("../data/priority-queue");t.exports=e},{"../data/priority-queue":15,"../graph":16,"../lodash":19}],13:[function(n,t,r){function e(n){function t(a){var f=u[a]={onStack:!0,lowlink:r,index:r++};if(e.push(a),n.successors(a).forEach(function(n){i.has(u,n)?u[n].onStack&&(f.lowlink=Math.min(f.lowlink,u[n].index)):(t(n),f.lowlink=Math.min(f.lowlink,u[n].lowlink))}),f.lowlink===f.index){var c,s=[];do c=e.pop(),u[c].onStack=!1,s.push(c);while(a!==c);o.push(s)}}var r=0,e=[],u={},o=[];return n.nodes().forEach(function(n){i.has(u,n)||t(n)}),o}var i=n("../lodash");t.exports=e},{"../lodash":19}],14:[function(n,t,r){function e(n){function t(a){if(u.has(e,a))throw new i;u.has(r,a)||(e[a]=!0,r[a]=!0,u.each(n.predecessors(a),t),delete e[a],o.push(a))}var r={},e={},o=[];if(u.each(n.sinks(),t),u.size(r)!==n.nodeCount())throw new i;return o}function i(){}var u=n("../lodash");t.exports=e,e.CycleException=i},{"../lodash":19}],15:[function(n,t,r){function e(){this._arr=[],this._keyIndices={}}var i=n("../lodash");t.exports=e,e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return i.has(this._keyIndices,n)},e.prototype.priority=function(n){var t=this._keyIndices[n];if(void 0!==t)return this._arr[t].priority},e.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,t){var r=this._keyIndices;if(n=String(n),!i.has(r,n)){var e=this._arr,u=e.length;return r[n]=u,e.push({key:n,priority:t}),this._decrease(u),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,t){var r=this._keyIndices[n];if(t>this._arr[r].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[r].priority+" New: "+t);this._arr[r].priority=t,this._decrease(r)},e.prototype._heapify=function(n){var t=this._arr,r=2*n,e=r+1,i=n;r<t.length&&(i=t[r].priority<t[i].priority?r:i,e<t.length&&(i=t[e].priority<t[i].priority?e:i),i!==n&&(this._swap(n,i),this._heapify(i)))},e.prototype._decrease=function(n){for(var t,r=this._arr,e=r[n].priority;0!==n&&(t=n>>1,!(r[t].priority<e));)this._swap(n,t),n=t},e.prototype._swap=function(n,t){var r=this._arr,e=this._keyIndices,i=r[n],u=r[t];r[n]=u,r[t]=i,e[u.key]=n,e[i.key]=t}},{"../lodash":19}],16:[function(n,t,r){"use strict";function e(n){this._isDirected=!c.has(n,"directed")||n.directed,this._isMultigraph=!!c.has(n,"multigraph")&&n.multigraph,this._isCompound=!!c.has(n,"compound")&&n.compound,this._label=void 0,this._defaultNodeLabelFn=c.constant(void 0),this._defaultEdgeLabelFn=c.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[l]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function i(n,t){n[t]?n[t]++:n[t]=1}function u(n,t){--n[t]||delete n[t]}function o(n,t,r,e){var i=""+t,u=""+r;if(!n&&i>u){var o=i;i=u,u=o}return i+h+u+h+(c.isUndefined(e)?s:e)}function a(n,t,r,e){var i=""+t,u=""+r;if(!n&&i>u){var o=i;i=u,u=o}var a={v:i,w:u};return e&&(a.name=e),a}function f(n,t){return o(n,t.v,t.w,t.name)}var c=n("./lodash");t.exports=e;var s="\0",l="\0",h="";e.prototype._nodeCount=0,e.prototype._edgeCount=0,e.prototype.isDirected=function(){return this._isDirected},e.prototype.isMultigraph=function(){return this._isMultigraph},e.prototype.isCompound=function(){return this._isCompound},e.prototype.setGraph=function(n){return this._label=n,this},e.prototype.graph=function(){return this._label},e.prototype.setDefaultNodeLabel=function(n){return c.isFunction(n)||(n=c.constant(n)),this._defaultNodeLabelFn=n,this},e.prototype.nodeCount=function(){return this._nodeCount},e.prototype.nodes=function(){return c.keys(this._nodes)},e.prototype.sources=function(){return c.filter(this.nodes(),c.bind(function(n){return c.isEmpty(this._in[n])},this))},e.prototype.sinks=function(){return c.filter(this.nodes(),c.bind(function(n){return c.isEmpty(this._out[n])},this))},e.prototype.setNodes=function(n,t){var r=arguments;return c.each(n,c.bind(function(n){r.length>1?this.setNode(n,t):this.setNode(n)},this)),this},e.prototype.setNode=function(n,t){return c.has(this._nodes,n)?(arguments.length>1&&(this._nodes[n]=t),this):(this._nodes[n]=arguments.length>1?t:this._defaultNodeLabelFn(n),this._isCompound&&(this._parent[n]=l,this._children[n]={},this._children[l][n]=!0),this._in[n]={},this._preds[n]={},this._out[n]={},this._sucs[n]={},++this._nodeCount,this)},e.prototype.node=function(n){return this._nodes[n]},e.prototype.hasNode=function(n){return c.has(this._nodes,n)},e.prototype.removeNode=function(n){var t=this;if(c.has(this._nodes,n)){var r=function(n){t.removeEdge(t._edgeObjs[n])};delete this._nodes[n],this._isCompound&&(this._removeFromParentsChildList(n),delete this._parent[n],c.each(this.children(n),c.bind(function(n){this.setParent(n)},this)),delete this._children[n]),c.each(c.keys(this._in[n]),r),delete this._in[n],delete this._preds[n],c.each(c.keys(this._out[n]),r),delete this._out[n],delete this._sucs[n],--this._nodeCount}return this},e.prototype.setParent=function(n,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(c.isUndefined(t))t=l;else{t+="";for(var r=t;!c.isUndefined(r);r=this.parent(r))if(r===n)throw new Error("Setting "+t+" as parent of "+n+" would create create a cycle");this.setNode(t)}return this.setNode(n),this._removeFromParentsChildList(n),this._parent[n]=t,this._children[t][n]=!0,this},e.prototype._removeFromParentsChildList=function(n){delete this._children[this._parent[n]][n]},e.prototype.parent=function(n){if(this._isCompound){var t=this._parent[n];if(t!==l)return t}},e.prototype.children=function(n){if(c.isUndefined(n)&&(n=l),this._isCompound){var t=this._children[n];if(t)return c.keys(t)}else{if(n===l)return this.nodes();if(this.hasNode(n))return[]}},e.prototype.predecessors=function(n){var t=this._preds[n];if(t)return c.keys(t)},e.prototype.successors=function(n){var t=this._sucs[n];if(t)return c.keys(t)},e.prototype.neighbors=function(n){var t=this.predecessors(n);if(t)return c.union(t,this.successors(n))},e.prototype.filterNodes=function(n){function t(n){var u=e.parent(n);return void 0===u||r.hasNode(u)?(i[n]=u,u):u in i?i[u]:t(u)}var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph()),c.each(this._nodes,c.bind(function(t,e){n(e)&&r.setNode(e,t)},this)),c.each(this._edgeObjs,c.bind(function(n){r.hasNode(n.v)&&r.hasNode(n.w)&&r.setEdge(n,this.edge(n))},this));var e=this,i={};return this._isCompound&&c.each(r.nodes(),function(n){r.setParent(n,t(n))}),r},e.prototype.setDefaultEdgeLabel=function(n){return c.isFunction(n)||(n=c.constant(n)),this._defaultEdgeLabelFn=n,this},e.prototype.edgeCount=function(){return this._edgeCount},e.prototype.edges=function(){return c.values(this._edgeObjs)},e.prototype.setPath=function(n,t){var r=this,e=arguments;return c.reduce(n,function(n,i){return e.length>1?r.setEdge(n,i,t):r.setEdge(n,i),i}),this},e.prototype.setEdge=function(){var n,t,r,e,u=!1,f=arguments[0];"object"==typeof f&&null!==f&&"v"in f?(n=f.v,t=f.w,r=f.name,2===arguments.length&&(e=arguments[1],u=!0)):(n=f,t=arguments[1],r=arguments[3],arguments.length>2&&(e=arguments[2],u=!0)),n=""+n,t=""+t,c.isUndefined(r)||(r=""+r);var s=o(this._isDirected,n,t,r);if(c.has(this._edgeLabels,s))return u&&(this._edgeLabels[s]=e),this;if(!c.isUndefined(r)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(n),this.setNode(t),this._edgeLabels[s]=u?e:this._defaultEdgeLabelFn(n,t,r);var l=a(this._isDirected,n,t,r);return n=l.v,t=l.w,Object.freeze(l),this._edgeObjs[s]=l,i(this._preds[t],n),i(this._sucs[n],t),this._in[t][s]=l,this._out[n][s]=l,this._edgeCount++,this},e.prototype.edge=function(n,t,r){var e=1===arguments.length?f(this._isDirected,arguments[0]):o(this._isDirected,n,t,r);return this._edgeLabels[e]},e.prototype.hasEdge=function(n,t,r){var e=1===arguments.length?f(this._isDirected,arguments[0]):o(this._isDirected,n,t,r);return c.has(this._edgeLabels,e)},e.prototype.removeEdge=function(n,t,r){var e=1===arguments.length?f(this._isDirected,arguments[0]):o(this._isDirected,n,t,r),i=this._edgeObjs[e];return i&&(n=i.v,t=i.w,delete this._edgeLabels[e],delete this._edgeObjs[e],u(this._preds[t],n),u(this._sucs[n],t),delete this._in[t][e],delete this._out[n][e],this._edgeCount--),this},e.prototype.inEdges=function(n,t){var r=this._in[n];if(r){var e=c.values(r);return t?c.filter(e,function(n){return n.v===t}):e}},e.prototype.outEdges=function(n,t){var r=this._out[n];if(r){var e=c.values(r);return t?c.filter(e,function(n){return n.w===t}):e}},e.prototype.nodeEdges=function(n,t){var r=this.inEdges(n,t);if(r)return r.concat(this.outEdges(n,t))}},{"./lodash":19}],17:[function(n,t,r){t.exports={Graph:n("./graph"),version:n("./version")}},{"./graph":16,"./version":20}],18:[function(n,t,r){function e(n){var t={options:{directed:n.isDirected(),multigraph:n.isMultigraph(),compound:n.isCompound()},nodes:i(n),edges:u(n)};return a.isUndefined(n.graph())||(t.value=a.clone(n.graph())),t}function i(n){return a.map(n.nodes(),function(t){var r=n.node(t),e=n.parent(t),i={v:t};return a.isUndefined(r)||(i.value=r),a.isUndefined(e)||(i.parent=e),i})}function u(n){return a.map(n.edges(),function(t){var r=n.edge(t),e={v:t.v,w:t.w};return a.isUndefined(t.name)||(e.name=t.name),a.isUndefined(r)||(e.value=r),e})}function o(n){var t=new f(n.options).setGraph(n.value);return a.each(n.nodes,function(n){t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),a.each(n.edges,function(n){t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var a=n("./lodash"),f=n("./graph");t.exports={write:e,read:o}},{"./graph":16,"./lodash":19}],19:[function(n,t,r){var e;if("function"==typeof n)try{e=n("lodash")}catch(i){}e||(e=window._),t.exports=e},{lodash:void 0}],20:[function(n,t,r){t.exports="2.1.1"},{}]},{},[1])(1)});
\ No newline at end of file
diff --git a/xos/core/xoslib/static/vendor/xosMcordTopologyVendor.js b/xos/core/xoslib/static/vendor/xosMcordTopologyVendor.js
index 103c7e8..231163f 100644
--- a/xos/core/xoslib/static/vendor/xosMcordTopologyVendor.js
+++ b/xos/core/xoslib/static/vendor/xosMcordTopologyVendor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 !function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++i<u;)(t=r[i].on)&&t.apply(this,arguments);return n}var e=[],r=new c;return t.on=function(t,i){var u,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,u=e.indexOf(o)).concat(e.slice(u+1)),r.remove(t)),i&&e.push(r.set(t,{on:i})),n)},t}function S(){ao.event.preventDefault()}function k(){for(var n,t=ao.event;n=t.sourceEvent;)t=n;return t}function N(n){for(var t=new _,e=0,r=arguments.length;++e<r;)t[arguments[e]]=w(t);return t.of=function(e,r){return function(i){try{var u=i.sourceEvent=ao.event;i.target=n,ao.event=i,t[i.type].apply(e,r)}finally{ao.event=u}}},t}function E(n){return ko(n,Co),n}function A(n){return"function"==typeof n?n:function(){return No(n,this)}}function C(n){return"function"==typeof n?n:function(){return Eo(n,this)}}function z(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function i(){this.setAttribute(n,t)}function u(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ao.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?u:i}function L(n){return n.trim().replace(/\s+/g," ")}function q(n){return new RegExp("(?:^|\\s+)"+ao.requote(n)+"(?:\\s+|$)","g")}function T(n){return(n+"").trim().split(/^|\s+/)}function R(n,t){function e(){for(var e=-1;++e<i;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<i;)n[e](this,r)}n=T(n).map(D);var i=n.length;return"function"==typeof t?r:e}function D(n){var t=q(n);return function(e,r){if(i=e.classList)return r?i.add(n):i.remove(n);var i=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(i)||e.setAttribute("class",L(i+" "+n))):e.setAttribute("class",L(i.replace(t," ")))}}function P(n,t,e){function r(){this.style.removeProperty(n)}function i(){this.style.setProperty(n,t,e)}function u(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?u:i}function U(n,t){function e(){delete this[n]}function r(){this[n]=t}function i(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?i:r}function j(n){function t(){var t=this.ownerDocument,e=this.namespaceURI;return e===zo&&t.documentElement.namespaceURI===zo?t.createElement(n):t.createElementNS(e,n)}function e(){return this.ownerDocument.createElementNS(n.space,n.local)}return"function"==typeof n?n:(n=ao.ns.qualify(n)).local?e:t}function F(){var n=this.parentNode;n&&n.removeChild(this)}function H(n){return{__data__:n}}function O(n){return function(){return Ao(this,n)}}function I(n){return arguments.length||(n=e),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function Y(n,t){for(var e=0,r=n.length;r>e;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t<l;);return o}}function X(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function i(){var i=l(t,co(arguments));r.call(this),this.addEventListener(n,this[o]=i,i.$=e),i._=t}function u(){var t,e=new RegExp("^__on([^.]+)"+ao.requote(n)+"$");for(var r in this)if(t=r.match(e)){var i=this[r];this.removeEventListener(t[1],i,i.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),l=$;a>0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t<e&&(e=t.t),t=(n=t).n):t=n?n.n=t.n:oa=t.n;return aa=n,e}function Pn(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Un(n,t){var e=Math.pow(10,3*xo(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(l,a)),null!=(i=ya[e=n.charAt(++a)])&&(e=n.charAt(++a)),(u=A[e])&&(e=u(t,null==i?"e"===e?" ":"0":i)),o.push(e),l=a+1);return o.push(n.slice(l,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},i=e(r,n,t,0);if(i!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var u=null!=r.Z&&va!==Hn,o=new(u?Hn:va);return"j"in r?o.setFullYear(r.y,0,r.j):"W"in r||"U"in r?("w"in r||(r.w="W"in r?1:0),o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),u?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var i,u,o,a=0,l=t.length,c=e.length;l>a;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function $n(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Bn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Wn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Jn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Gn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.y=Qn(+r[0]),e+r[0].length):-1}function Kn(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Qn(n){return n+(n>68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function ft(){}function st(n,t,e){var r=e.s=n+t,i=r-n,u=r-i;e.t=n-u+(t-i)}function ht(n,t){n&&wa.hasOwnProperty(n.type)&&wa[n.type](n,t)}function pt(n,t,e){var r,i=-1,u=n.length-e;for(t.lineStart();++i<u;)r=n[i],t.point(r[0],r[1],r[2]);t.lineEnd()}function gt(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)pt(n[e],t,1);t.polygonEnd()}function vt(){function n(n,t){n*=Yo,t=t*Yo/2+Fo/4;var e=n-r,o=e>=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])<Uo&&xo(n[1]-t[1])<Uo}function St(n,t){n*=Yo;var e=Math.cos(t*=Yo);kt(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function kt(n,t,e){++Ea,Ca+=(n-Ca)/Ea,za+=(t-za)/Ea,La+=(e-La)/Ea}function Nt(){function n(n,i){n*=Yo;var u=Math.cos(i*=Yo),o=u*Math.cos(n),a=u*Math.sin(n),l=Math.sin(i),c=Math.atan2(Math.sqrt((c=e*l-r*a)*c+(c=r*o-t*l)*c+(c=t*a-e*o)*c),t*o+e*a+r*l);Aa+=c,qa+=c*(t+(t=o)),Ta+=c*(e+(e=a)),Ra+=c*(r+(r=l)),kt(t,e,r)}var t,e,r;ja.point=function(i,u){i*=Yo;var o=Math.cos(u*=Yo);t=o*Math.cos(i),e=o*Math.sin(i),r=Math.sin(u),ja.point=n,kt(t,e,r)}}function Et(){ja.point=St}function At(){function n(n,t){n*=Yo;var e=Math.cos(t*=Yo),o=e*Math.cos(n),a=e*Math.sin(n),l=Math.sin(t),c=i*l-u*a,f=u*o-r*l,s=r*a-i*o,h=Math.sqrt(c*c+f*f+s*s),p=r*o+i*a+u*l,g=h&&-nn(p)/h,v=Math.atan2(h,p);Da+=g*c,Pa+=g*f,Ua+=g*s,Aa+=v,qa+=v*(r+(r=o)),Ta+=v*(i+(i=a)),Ra+=v*(u+(u=l)),kt(r,i,u)}var t,e,r,i,u;ja.point=function(o,a){t=o,e=a,ja.point=n,o*=Yo;var l=Math.cos(a*=Yo);r=l*Math.cos(o),i=l*Math.sin(o),u=Math.sin(a),kt(r,i,u)},ja.lineEnd=function(){n(t,e),ja.lineEnd=Et,ja.point=St}}function Ct(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function zt(){return!0}function Lt(n,t,e,r,i){var u=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(wt(e,r)){i.lineStart();for(var a=0;t>a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r<t;)i.n=e=n[r],e.p=i,i=e;i.n=e=n[0],e.p=i}}function Tt(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Rt(n,t,e,r){return function(i,u){function o(t,e){var r=i(t,e);n(t=r[0],e=r[1])&&u.point(t,e)}function a(n,t){var e=i(n,t);d.point(e[0],e[1])}function l(){m.point=a,d.lineStart()}function c(){m.point=o,d.lineEnd()}function f(n,t){v.push([n,t]);var e=i(n,t);x.point(e[0],e[1])}function s(){x.lineStart(),v=[]}function h(){f(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),g.push(v),v=null,r)if(1&t){n=e[0];var i,r=n.length-1,o=-1;if(r>0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o<r;)u.point((i=n[o])[0],i[1]);u.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)<Uo?(n.point(e,r=(r+o)/2>0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)<Uo&&(e-=i*Uo),xo(u-a)<Uo&&(u-=a*Uo),r=Ft(e,r,u,o),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=u,r=o),i=a},lineEnd:function(){n.lineEnd(),e=r=NaN},clean:function(){return 2-t}}}function Ft(n,t,e,r){var i,u,o=Math.sin(n-e);return xo(o)>Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]<t[0]?Fo:-Fo;i=e*u/2,r.point(-u,i),r.point(0,i),r.point(u,i)}else r.point(t[0],t[1])}function Ot(n,t){var e=n[0],r=n[1],i=[Math.sin(e),-Math.cos(e),0],u=0,o=0;ka.reset();for(var a=0,l=t.length;l>a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&0>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)<Uo,C=A||Uo>E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)<Uo?k:N):k<=b[1]&&b[1]<=N:E>Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)<Uo?i>0?0:3:xo(r[0]-e)<Uo?i>0?2:1:xo(r[1]-t)<Uo?i>0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){
 r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)<Uo||xo(r-h)<Uo?(r+h)/2:Math.atan2(_,b),E=n(N,k),A=E[0],C=E[1],z=A-t,L=C-e,q=M*z-m*L;(q*q/x>u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)<Uo?ce:(e.invert=function(n,t){var e=u-t;return[Math.atan2(n,e)/i,u-K(i)*Math.sqrt(n*n+e*e)]},e)}function Ne(n,t){return[n,Math.log(Math.tan(Fo/4+t/2))]}function Ee(n){var t,e=oe(n),r=e.scale,i=e.translate,u=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=i.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=u.apply(e,arguments);if(o===e){if(t=null==n){var a=Fo*r(),l=i();u([[l[0]-a,l[1]-a],[l[0]+a,l[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ae(n,t){return[Math.log(Math.tan(Fo/4+t/2)),-n]}function Ce(n){return n[0]}function ze(n){return n[1]}function Le(n){for(var t=n.length,e=[0,1],r=2,i=2;t>i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)<Uo&&xo(r-l.circle.cy)<Uo;)u=l.P,a.unshift(l),je(l),l=u;a.unshift(l),Be(l);for(var c=o;c.circle&&xo(e-c.circle.x)<Uo&&xo(r-c.circle.cy)<Uo;)o=c.N,a.push(c),je(c),c=o;a.push(c),Be(c);var f,s=a.length;for(f=1;s>f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)<Uo&&g-i>Uo?{x:s,y:xo(t-s)<Uo?e:g}:xo(i-g)<Uo&&h-r>Uo?{x:xo(e-g)<Uo?t:h,y:g}:xo(r-h)<Uo&&i-p>Uo?{x:h,y:xo(t-h)<Uo?e:p}:xo(i-p)<Uo&&r-s>Uo?{x:xo(e-p)<Uo?t:s,y:p}:null),u.site,null)),++l)}function Ve(n,t){return t.angle-n.angle}function Xe(){rr(this),this.x=this.y=this.arc=this.site=this.cy=null}function $e(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,i=n.site,u=e.site;if(r!==u){var o=i.x,a=i.y,l=r.x-o,c=r.y-a,f=u.x-o,s=u.y-a,h=2*(l*s-c*f);if(!(h>=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.y<M.y||y.y===M.y&&y.x<=M.x){if(!M.L){m=M.P;break}M=M.L}else{if(!M.R){m=M;break}M=M.R}ll.insert(m,y),m||(al=y)}}}}function Be(n){var t=n.circle;t&&(t.P||(al=t.N),ll.remove(t),fl.push(t),rr(t),n.circle=null)}function We(n){for(var t,e=il,r=Yt(n[0][0],n[0][1],n[1][0],n[1][1]),i=e.length;i--;)t=e[i],(!Je(t,n)||!r(t)||xo(t.a.x-t.b.x)<Uo&&xo(t.a.y-t.b.y)<Uo)&&(t.a=t.b=null,e.splice(i,1))}function Je(n,t){var e=n.b;if(e)return!0;var r,i,u=n.a,o=t[0][0],a=t[1][0],l=t[0][1],c=t[1][1],f=n.l,s=n.r,h=f.x,p=f.y,g=s.x,v=s.y,d=(h+g)/2,y=(p+v)/2;if(v===p){if(o>d||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.y<l)return}else u={x:d,y:c};e={x:d,y:l}}}else if(r=(h-g)/(v-p),i=y-r*d,-1>r||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.y<l)return}else u={x:(c-i)/r,y:c};e={x:(l-i)/r,y:l}}else if(v>p){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.x<o)return}else u={x:a,y:r*a+i};e={x:o,y:r*o+i}}return n.a=u,n.b=e,!0}function Ge(n,t){this.l=n,this.r=t,this.a=this.b=null}function Ke(n,t,e,r){var i=new Ge(n,t);return il.push(i),e&&nr(i,n,t,e),r&&nr(i,t,n,r),ul[n.i].edges.push(new tr(i,n,t)),ul[t.i].edges.push(new tr(i,t,n)),i}function Qe(n,t,e){var r=new Ge(n,null);return r.a=t,r.b=e,il.push(r),r}function nr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function tr(n,t,e){var r=n.a,i=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(i.x-r.x,r.y-i.y):Math.atan2(r.x-i.x,i.y-r.y)}function er(){this._=null}function rr(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ir(n,t){var e=t,r=t.R,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function ur(n,t){var e=t,r=t.L,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function or(n){for(;n.L;)n=n.L;return n}function ar(n,t){var e,r,i,u=n.sort(lr).pop();for(il=[],ul=new Array(n.length),ol=new er,ll=new er;;)if(i=al,u&&(!i||u.y<i.y||u.y===i.y&&u.x<i.x))u.x===e&&u.y===r||(ul[u.i]=new Ye(u),He(u),e=u.x,r=u.y),u=n.pop();else{if(!i)break;Fe(i.arc)}t&&(We(t),Ze(t));var o={cells:ul,edges:il};return ol=ll=il=ul=null,o}function lr(n,t){return t.y-n.y||t.x-n.x}function cr(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function fr(n){return n.x}function sr(n){return n.y}function hr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function pr(n,t,e,r,i,u){if(!n(t,e,r,i,u)){var o=.5*(e+i),a=.5*(r+u),l=t.nodes;l[0]&&pr(n,l[0],e,r,o,a),l[1]&&pr(n,l[1],o,r,i,a),l[2]&&pr(n,l[2],e,a,o,u),l[3]&&pr(n,l[3],o,a,i,u)}}function gr(n,t,e,r,i,u,o){var a,l=1/0;return function c(n,f,s,h,p){if(!(f>u||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return u<t.length&&(i=t.slice(u),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?(t=l[0].x,function(n){return t(n)+""}):function(){return t}:(t=l.length,function(n){for(var e,r=0;t>r;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Zo,this.translate=[n.e,n.f],this.scale=[r,u],this.skew=u?Math.atan2(i,u)*Zo:0}function Fr(n,t){return n[0]*t[0]+n[1]*t[1]}function Hr(n){var t=Math.sqrt(Fr(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Or(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ir(n){return n.length?n.pop()+",":""}function Yr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push("translate(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else(t[0]||t[1])&&e.push("translate("+t+")")}function Zr(n,t,e,r){n!==t?(n-t>180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i<u;)e[(t=r[i]).i]=t.x(n);return e.join("")}}function Br(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Wr(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Jr(n){for(var t=n.source,e=n.target,r=Kr(t,e),i=[t];t!==r;)t=t.parent,i.push(t);for(var u=i.length;e!==r;)i.splice(u,0,e),e=e.parent;return i}function Gr(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Kr(n,t){if(n===t)return n;for(var e=Gr(n),r=Gr(t),i=e.pop(),u=r.pop(),o=null;i===u;)o=i,i=e.pop(),u=r.pop();return o}function Qr(n){n.fixed|=2}function ni(n){n.fixed&=-7}function ti(n){n.fixed|=4,n.px=n.x,n.py=n.y}function ei(n){n.fixed&=-5}function ri(n,t,e){var r=0,i=0;if(n.charge=0,!n.leaf)for(var u,o=n.nodes,a=o.length,l=-1;++l<a;)u=o[l],null!=u&&(ri(u,t,e),n.charge+=u.charge,r+=u.charge*u.cx,i+=u.charge*u.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var c=t*e[n.point.index];n.charge+=n.pointCharge=c,r+=c*n.point.x,i+=c*n.point.y}n.cx=r/n.charge,n.cy=i/n.charge}function ii(n,t){return ao.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=fi,n}function ui(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(i=n.children)&&(r=i.length))for(var r,i;--r>=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++o<i;)e.push(u[o]);for(;null!=(n=r.pop());)t(n)}function ai(n){return n.children}function li(n){return n.value}function ci(n,t){return t.value-n.value}function fi(n){return ao.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function si(n){return n.x}function hi(n){return n.y}function pi(n,t,e){n.y0=t,n.y=e}function gi(n){return ao.range(n.length)}function vi(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function di(n){for(var t,e=1,r=0,i=n[0][1],u=n.length;u>e;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.r<r.r?Si(r,i=a):Si(r=l,i),o--):(wi(r,u),i=u,t(u))}var y=(f+s)/2,m=(h+p)/2,M=0;for(o=0;c>o;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u<o;)Ci(i[u],t,e,r)}function zi(n,t,e){var r=n.r+e.r,i=t.x-n.x,u=t.y-n.y;if(r&&(i||u)){var o=t.r+e.r,a=i*i+u*u;o*=o,r*=r;var l=.5+(r-o)/(2*a),c=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+l*i+c*u,e.y=n.y+l*u-c*i}else e.x=n.x+r,e.y=n.y}function Li(n,t){return n.parent==t.parent?1:2}function qi(n){var t=n.children;return t.length?t[0]:n.t}function Ti(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ri(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Di(n){for(var t,e=0,r=0,i=n.children,u=i.length;--u>=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)i.push(e(n[o-1],n[o])),u.push(r(t[o-1],t[o]));return function(t){var e=ao.bisect(n,t,1,a)-1;return u[e](i[e](t))}}function Wi(n,t,e,r){function i(){var i=Math.min(n.length,t.length)>2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++<f;)for(var h=s-1;h>0;h--)o.push(u(c)*h);for(c=0;o[c]<a;c++);for(f=o.length;o[f-1]>l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++o<a;)i.has(u=r[o])||i.set(u,n.push(u));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(u=n,o=0,t={t:"range",a:arguments},e):u},e.rangePoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=(l+c)/2,0):(c-l)/(n.length-1+a);return u=r(l+f*a/2,f),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=c=Math.round((l+c)/2),0):(c-l)/(n.length-1+a)|0;return u=r(l+Math.round(f*a/2+(c-l-(n.length-1+a)*f)/2),f),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=(s-f)/(n.length-a+2*l);return u=r(f+h*l,h),c&&u.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=Math.floor((s-f)/(n.length-a+2*l));return u=r(f+Math.round((s-f-(n.length-a)*h)/2),h),c&&u.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Yi(t.a[0])},e.copy=function(){return ou(n,t)},e.domain(n)}function au(n,t){function u(){var e=0,r=t.length;for(a=[];++e<r;)a[e-1]=ao.quantile(n,e/r);return o}function o(n){return isNaN(n=+n)?void 0:t[ao.bisect(a,n)]}var a;return o.domain=function(t){return arguments.length?(n=t.map(r).filter(i).sort(e),u()):n},o.range=function(n){return arguments.length?(t=n,u()):t},o.quantiles=function(){return a},o.invertExtent=function(e){return e=t.indexOf(e),0>e?[NaN,NaN]:[e>0?a[e-1]:n[0],e<a.length?a[e]:n[n.length-1]]},o.copy=function(){return au(n,t)},u()}function lu(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(u*(t-n))))]}function i(){return u=e.length/(t-n),o=e.length-1,r}var u,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],i()):[n,t]},r.range=function(n){return arguments.length?(e=n,i()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s<h;)i.call(this,l=t[s],s)?f.push([+p.call(this,l,s),+g.call(this,l,s)]):f.length&&(o(),f=[]);return f.length&&o(),c.length?c.join(""):null}var e=Ce,r=ze,i=zt,u=xu,o=u.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(i=n,t):i},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?u=n:(u=Tl.get(n)||xu).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function xu(n){return n.length>1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("V",(r=n[t])[1],"H",r[0]);return i.join("")}function Su(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r=n[t])[0],"V",r[1]);return i.join("")}function ku(n,t){return n.length<4?xu(n):n[1]+Au(n.slice(1,-1),Cu(n,t))}function Nu(n,t){return n.length<3?bu(n):n[0]+Au((n.push(n[0]),n),Cu([n[n.length-2]].concat(n,[n[1]]),t))}function Eu(n,t){return n.length<3?xu(n):n[0]+Au(n,Cu(n,t))}function Au(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return xu(n);var e=n.length!=t.length,r="",i=n[0],u=n[1],o=t[0],a=o,l=1;if(e&&(r+="Q"+(u[0]-2*o[0]/3)+","+(u[1]-2*o[1]/3)+","+u[0]+","+u[1],i=n[1],l=2),t.length>1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c<t.length;c++,l++)u=n[l],a=t[c],r+="S"+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1]}if(e){var f=n[l];r+="Q"+(u[0]+2*a[0]/3)+","+(u[1]+2*a[1]/3)+","+f[0]+","+f[1]}return r}function Cu(n,t){for(var e,r=[],i=(1-t)/2,u=n[0],o=n[1],a=1,l=n.length;++a<l;)e=u,u=o,o=n[a],r.push([i*(o[0]-e[0]),i*(o[1]-e[1])]);return r}function zu(n){if(n.length<3)return xu(n);var t=1,e=n.length,r=n[0],i=r[0],u=r[1],o=[i,i,i,(r=n[1])[0]],a=[u,u,u,r[1]],l=[i,",",u,"L",Ru(Pl,o),",",Ru(Pl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),Du(l,o,a);return n.pop(),l.push("L",r),l.join("")}function Lu(n){if(n.length<4)return xu(n);for(var t,e=[],r=-1,i=n.length,u=[0],o=[0];++r<3;)t=n[r],u.push(t[0]),o.push(t[1]);for(e.push(Ru(Pl,u)+","+Ru(Pl,o)),--r;++r<i;)t=n[r],u.shift(),u.push(t[0]),o.shift(),o.push(t[1]),Du(e,u,o);return e.join("")}function qu(n){for(var t,e,r=-1,i=n.length,u=i+4,o=[],a=[];++r<4;)e=n[r%i],o.push(e[0]),a.push(e[1]);for(t=[Ru(Pl,o),",",Ru(Pl,a)],--r;++r<u;)e=n[r%i],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Du(t,o,a);return t.join("")}function Tu(n,t){var e=n.length-1;if(e)for(var r,i,u=n[0][0],o=n[0][1],a=n[e][0]-u,l=n[e][1]-o,c=-1;++c<=e;)r=n[c],i=c/e,r[0]=t*r[0]+(1-t)*(u+i*a),r[1]=t*r[1]+(1-t)*(o+i*l);return zu(n)}function Ru(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function Du(n,t,e){n.push("C",Ru(Rl,t),",",Ru(Rl,e),",",Ru(Dl,t),",",Ru(Dl,e),",",Ru(Pl,t),",",Ru(Pl,e))}function Pu(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Uu(n){for(var t=0,e=n.length-1,r=[],i=n[0],u=n[1],o=r[0]=Pu(i,u);++t<e;)r[t]=(o+(o=Pu(i=u,u=n[t+1])))/2;return r[t]=o,r}function ju(n){for(var t,e,r,i,u=[],o=Uu(n),a=-1,l=n.length-1;++a<l;)t=Pu(n[a],n[a+1]),xo(t)<Uo?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,i=e*e+r*r,i>9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i<u;)t=n[i],e=t[0],r=t[1]-Io,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Ou(n){function t(t){function l(){v.push("M",a(n(y),s),f,c(n(d.reverse()),s),"Z")}for(var h,p,g,v=[],d=[],y=[],m=-1,M=t.length,x=En(e),b=En(i),_=e===r?function(){
 return p}:En(r),w=i===u?function(){return g}:En(u);++m<M;)o.call(this,h=t[m],m)?(d.push([p=+x.call(this,h,m),g=+b.call(this,h,m)]),y.push([+_.call(this,h,m),+w.call(this,h,m)])):d.length&&(l(),d=[],y=[]);return d.length&&l(),v.length?v.join(""):null}var e=Ce,r=Ce,i=0,u=ze,o=zt,a=xu,l=a.key,c=a,f="L",s=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(i=u=n,t):u},t.y0=function(n){return arguments.length?(i=n,t):i},t.y1=function(n){return arguments.length?(u=n,t):u},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(l="function"==typeof n?a=n:(a=Tl.get(n)||xu).key,c=a.reverse||a,f=a.closed?"M":"L",t):l},t.tension=function(n){return arguments.length?(s=n,t):s},t}function Iu(n){return n.radius}function Yu(n){return[n.x,n.y]}function Zu(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-Io;return[e*Math.cos(r),e*Math.sin(r)]}}function Vu(){return 64}function Xu(){return"circle"}function $u(n){var t=Math.sqrt(n/Fo);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Bu(n){return function(){var t,e,r;(t=this[n])&&(r=t[e=t.active])&&(r.timer.c=null,r.timer.t=NaN,--t.count?delete t[e]:delete this[n],t.active+=.5,r.event&&r.event.interrupt.call(this,this.__data__,r.index))}}function Wu(n,t,e){return ko(n,Yl),n.namespace=t,n.id=e,n}function Ju(n,t,e,r){var i=n.id,u=n.namespace;return Y(n,"function"==typeof e?function(n,o,a){n[u][i].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[u][i].tween.set(t,e)}))}function Gu(n){return null==n&&(n=""),function(){this.textContent=n}}function Ku(n){return null==n?"__transition__":"__transition_"+n+"__"}function Qu(n,t,e,r,i){function u(n){var t=v.delay;return f.t=t+l,n>=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]<Kl[u]/i?u-1:u]:[tc,Ki(n,e)[2]]}return r.invert=function(t){return io(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(io)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,io(+e+1),t).length}var u=r.domain(),o=Yi(u),a=null==n?i(o,10):"number"==typeof n&&i(o,n);return a&&(n=a[0],t=a[1]),r.domain(Xi(u,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.16"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&e>r&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&e>r&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&r>e&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&r>e&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u<o;)if(null!=(r=n[u])&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=n[u])&&(e>r&&(e=r),r>i&&(i=r))}else{for(;++u<o;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=t.call(n,n[u],u))&&(e>r&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o<u;)i(e=+n[o])&&(r+=e);else for(;++o<u;)i(e=+t.call(n,n[o],o))&&(r+=e);return r},ao.mean=function(n,t){var e,u=0,o=n.length,a=-1,l=o;if(1===arguments.length)for(;++a<o;)i(e=r(n[a]))?u+=e:--l;else for(;++a<o;)i(e=r(t.call(n,n[a],a)))?u+=e:--l;return l?u/l:void 0},ao.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),i=+n[r-1],u=e-r;return u?i+u*(n[r]-i):i},ao.median=function(n,t){var u,o=[],a=n.length,l=-1;if(1===arguments.length)for(;++l<a;)i(u=r(n[l]))&&o.push(u);else for(;++l<a;)i(u=r(t.call(n,n[l],l)))&&o.push(u);return o.length?ao.quantile(o.sort(e),.5):void 0},ao.variance=function(n,t){var e,u,o=n.length,a=0,l=0,c=-1,f=0;if(1===arguments.length)for(;++c<o;)i(e=r(n[c]))&&(u=e-a,a+=u/++f,l+=u*(e-a));else for(;++c<o;)i(e=r(t.call(n,n[c],c)))&&(u=e-a,a+=u/++f,l+=u*(e-a));return f>1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t<e;)for(var i,u=-1,a=r[t]=new Array(i);++u<i;)a[u]=n[u][t];return r},ao.zip=function(){return ao.transpose(arguments)},ao.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ao.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ao.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ao.merge=function(n){for(var t,e,r,i=n.length,u=-1,o=0;++u<i;)o+=n[u].length;for(e=new Array(o);--i>=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)<t;)i.push(r/u);return i},ao.map=function(n,t){var e=new c;if(n instanceof c)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,i=-1,u=n.length;if(1===arguments.length)for(;++i<u;)e.set(i,n[i]);else for(;++i<u;)e.set(t.call(n,r=n[i],i),r)}else for(var o in n)e.set(o,n[o]);return e};var bo="__proto__",_o="\x00";l(c,{has:h,get:function(n){return this._[f(n)]},set:function(n,t){return this._[f(n)]=t},remove:p,keys:g,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:s(t),value:this._[t]});return n},size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t),this._[t])}}),ao.nest=function(){function n(t,o,a){if(a>=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p<g;)(h=d.get(l=v(f=o[p])))?h.push(f):d.set(l,[f]);return t?(f=t(),s=function(e,r){f.set(e,n(t,r,a))}):(f={},s=function(e,r){f[e]=n(t,r,a)}),d.forEach(s),f}function t(n,e){if(e>=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r<i;)n[e=arguments[r]]=M(n,t,t[e]);return n};var wo=["webkit","ms","moz","Moz","o","O"];ao.dispatch=function(){for(var n=new _,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=w(n);return n},_.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o<a;){u.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var l=-1,c=r.length;++l<c;)(i=r[l])?(t.push(e=n.call(i,i.__data__,l,o)),e&&"__data__"in i&&(e.__data__=i.__data__)):t.push(null)}return E(u)},Co.selectAll=function(n){var t,e,r=[];n=C(n);for(var i=-1,u=this.length;++i<u;)for(var o=this[i],a=-1,l=o.length;++a<l;)(e=o[a])&&(r.push(t=co(n.call(e,e.__data__,a,i))),t.parentNode=e);return E(r)};var zo="http://www.w3.org/1999/xhtml",Lo={svg:"http://www.w3.org/2000/svg",xhtml:zo,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ao.ns={prefix:Lo,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++i<r;)if(!t.contains(n[i]))return!1}else for(t=e.getAttribute("class");++i<r;)if(!q(n[i]).test(t))return!1;return!0}for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},Co.style=function(n,e,r){var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++r<o;)(i=n[r])&&(y.has(d=t.call(i,i.__data__,r))?v[r]=i:y.set(d,i),m[r]=d);for(r=-1;++r<s;)(i=y.get(d=t.call(e,u=e[r],r)))?i!==!0&&(p[r]=i,i.__data__=u):g[r]=H(u),y.set(d,!0);for(r=-1;++r<o;)r in m&&y.get(m[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)i=n[r],u=e[r],i?(i.__data__=u,p[r]=i):g[r]=H(u);for(;s>r;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++u<o;)(i=r[u])&&(n[u]=i.__data__);return n}var a=Z([]),l=E([]),f=E([]);if("function"==typeof n)for(;++u<o;)e(r=this[u],n.call(r,r.parentNode.__data__,u));else for(;++u<o;)e(r=this[u],n);return l.enter=function(){return a},l.exit=function(){return f},l},Co.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},Co.filter=function(n){var t,e,r,i=[];"function"!=typeof n&&(n=O(n));for(var u=0,o=this.length;o>u;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],i=r.length-1,u=r[i];--i>=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},Co.each=function(n){return Y(this,function(t,e,r){n.call(t,t.__data__,e,r)})},Co.call=function(n){var t=co(arguments);return n.apply(t[0]=this,t),this},Co.empty=function(){return!this.node()},Co.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++a<l;){r=(i=this[a]).update,o.push(t=[]),t.parentNode=i.parentNode;for(var c=-1,f=i.length;++c<f;)(u=i[c])?(t.push(r[c]=e=n.call(i.parentNode,u.__data__,c,a)),e.__data__=u.__data__):t.push(null)}return E(o)},qo.insert=function(n,t){return arguments.length<2&&(t=V(this)),Co.insert.call(this,n,t)},ao.select=function(t){var e;return"string"==typeof t?(e=[No(t,fo)],e.parentNode=fo.documentElement):(e=[t],e.parentNode=n(t)),E([e])},ao.selectAll=function(n){var t;return"string"==typeof n?(t=co(Eo(n,fo)),t.parentNode=fo.documentElement):(t=co(n),t.parentNode=null),E([t])},Co.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++<c;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}f=e+2;var r=n.charCodeAt(e+1);return 13===r?(i=!0,10===n.charCodeAt(e+2)&&++f):10===r&&(i=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;c>f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv("	","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
diff --git a/xos/core/xoslib/static/vendor/xosServiceGridVendor.js b/xos/core/xoslib/static/vendor/xosServiceGridVendor.js
index 9c9fd7f..b626679 100644
--- a/xos/core/xoslib/static/vendor/xosServiceGridVendor.js
+++ b/xos/core/xoslib/static/vendor/xosServiceGridVendor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.jsyaml=t()}}(function(){return function t(e,n,r){function i(a,s){if(!n[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[a]={exports:{}};e[a][0].call(f.exports,function(t){var n=e[a][1][t];return i(n?n:t)},f,f.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(t,e,n){"use strict";function r(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}var i=t("./js-yaml/loader"),o=t("./js-yaml/dumper");e.exports.Type=t("./js-yaml/type"),e.exports.Schema=t("./js-yaml/schema"),e.exports.FAILSAFE_SCHEMA=t("./js-yaml/schema/failsafe"),e.exports.JSON_SCHEMA=t("./js-yaml/schema/json"),e.exports.CORE_SCHEMA=t("./js-yaml/schema/core"),e.exports.DEFAULT_SAFE_SCHEMA=t("./js-yaml/schema/default_safe"),e.exports.DEFAULT_FULL_SCHEMA=t("./js-yaml/schema/default_full"),e.exports.load=i.load,e.exports.loadAll=i.loadAll,e.exports.safeLoad=i.safeLoad,e.exports.safeLoadAll=i.safeLoadAll,e.exports.dump=o.dump,e.exports.safeDump=o.safeDump,e.exports.YAMLException=t("./js-yaml/exception"),e.exports.MINIMAL_SCHEMA=t("./js-yaml/schema/failsafe"),e.exports.SAFE_SCHEMA=t("./js-yaml/schema/default_safe"),e.exports.DEFAULT_SCHEMA=t("./js-yaml/schema/default_full"),e.exports.scan=r("scan"),e.exports.parse=r("parse"),e.exports.compose=r("compose"),e.exports.addConstructor=r("addConstructor")},{"./js-yaml/dumper":3,"./js-yaml/exception":4,"./js-yaml/loader":5,"./js-yaml/schema":7,"./js-yaml/schema/core":8,"./js-yaml/schema/default_full":9,"./js-yaml/schema/default_safe":10,"./js-yaml/schema/failsafe":11,"./js-yaml/schema/json":12,"./js-yaml/type":13}],2:[function(t,e,n){"use strict";function r(t){return"undefined"==typeof t||null===t}function i(t){return"object"==typeof t&&null!==t}function o(t){return Array.isArray(t)?t:r(t)?[]:[t]}function a(t,e){var n,r,i,o;if(e)for(o=Object.keys(e),n=0,r=o.length;n<r;n+=1)i=o[n],t[i]=e[i];return t}function s(t,e){var n,r="";for(n=0;n<e;n+=1)r+=t;return r}function u(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t}e.exports.isNothing=r,e.exports.isObject=i,e.exports.toArray=o,e.exports.repeat=s,e.exports.isNegativeZero=u,e.exports.extend=a},{}],3:[function(t,e,n){"use strict";function r(t,e){var n,r,i,o,a,s,u;if(null===e)return{};for(n={},r=Object.keys(e),i=0,o=r.length;i<o;i+=1)a=r[i],s=String(e[a]),"!!"===a.slice(0,2)&&(a="tag:yaml.org,2002:"+a.slice(2)),u=t.compiledTypeMap[a],u&&R.call(u.styleAliases,s)&&(s=u.styleAliases[s]),n[a]=s;return n}function i(t){var e,n,r;if(e=t.toString(16).toUpperCase(),t<=255)n="x",r=2;else if(t<=65535)n="u",r=4;else{if(!(t<=4294967295))throw new j("code point within a string may not be greater than 0xFFFFFFFF");n="U",r=8}return"\\"+n+z.repeat("0",r-e.length)+e}function o(t){this.schema=t.schema||T,this.indent=Math.max(1,t.indent||2),this.skipInvalid=t.skipInvalid||!1,this.flowLevel=z.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=r(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function a(t,e){for(var n,r=z.repeat(" ",e),i=0,o=-1,a="",s=t.length;i<s;)o=t.indexOf("\n",i),o===-1?(n=t.slice(i),i=s):(n=t.slice(i,o+1),i=o+1),n.length&&"\n"!==n&&(a+=r),a+=n;return a}function s(t,e){return"\n"+z.repeat(" ",t.indent*e)}function u(t,e){var n,r,i;for(n=0,r=t.implicitTypes.length;n<r;n+=1)if(i=t.implicitTypes[n],i.resolve(e))return!0;return!1}function c(t){return t===L||t===D}function f(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&65279!==t||65536<=t&&t<=1114111}function l(t){return f(t)&&65279!==t&&t!==H&&t!==J&&t!==Q&&t!==et&&t!==rt&&t!==K&&t!==M}function h(t){return f(t)&&65279!==t&&!c(t)&&t!==G&&t!==V&&t!==K&&t!==H&&t!==J&&t!==Q&&t!==et&&t!==rt&&t!==M&&t!==Z&&t!==Y&&t!==U&&t!==nt&&t!==$&&t!==q&&t!==P&&t!==W&&t!==X&&t!==tt}function d(t,e,n,r,i){var o,a,s=!1,u=!1,d=r!==-1,p=-1,_=h(t.charCodeAt(0))&&!c(t.charCodeAt(t.length-1));if(e)for(o=0;o<t.length;o++){if(a=t.charCodeAt(o),!f(a))return ft;_=_&&l(a)}else{for(o=0;o<t.length;o++){if(a=t.charCodeAt(o),a===B)s=!0,d&&(u=u||o-p-1>r&&" "!==t[p+1],p=o);else if(!f(a))return ft;_=_&&l(a)}u=u||d&&o-p-1>r&&" "!==t[p+1]}return s||u?" "===t[0]&&n>9?ft:u?ct:ut:_&&!i(t)?at:st}function p(t,e,n,r){t.dump=function(){function i(e){return u(t,e)}if(0===e.length)return"''";if(!t.noCompatMode&&ot.indexOf(e)!==-1)return"'"+e+"'";var o=t.indent*Math.max(1,n),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),c=r||t.flowLevel>-1&&n>=t.flowLevel;switch(d(e,c,t.indent,s,i)){case at:return e;case st:return"'"+e.replace(/'/g,"''")+"'";case ut:return"|"+_(e,t.indent)+g(a(e,o));case ct:return">"+_(e,t.indent)+g(a(m(e,s),o));case ft:return'"'+y(e,s)+'"';default:throw new j("impossible error: invalid scalar style")}}()}function _(t,e){var n=" "===t[0]?String(e):"",r="\n"===t[t.length-1],i=r&&("\n"===t[t.length-2]||"\n"===t),o=i?"+":r?"":"-";return n+o+"\n"}function g(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function m(t,e){for(var n,r,i=/(\n+)([^\n]*)/g,o=function(){var n=t.indexOf("\n");return n=n!==-1?n:t.length,i.lastIndex=n,v(t.slice(0,n),e)}(),a="\n"===t[0]||" "===t[0];r=i.exec(t);){var s=r[1],u=r[2];n=" "===u[0],o+=s+(a||n||""===u?"":"\n")+v(u,e),a=n}return o}function v(t,e){if(""===t||" "===t[0])return t;for(var n,r,i=/ [^ ]/g,o=0,a=0,s=0,u="";n=i.exec(t);)s=n.index,s-o>e&&(r=a>o?a:s,u+="\n"+t.slice(o,r),o=r+1),a=s;return u+="\n",u+=t.length-o>e&&a>o?t.slice(o,a)+"\n"+t.slice(a+1):t.slice(o),u.slice(1)}function y(t){for(var e,n,r="",o=0;o<t.length;o++)e=t.charCodeAt(o),n=it[e],r+=!n&&f(e)?t[o]:n||i(e);return r}function w(t,e,n){var r,i,o="",a=t.tag;for(r=0,i=n.length;r<i;r+=1)C(t,e,n[r],!1,!1)&&(0!==r&&(o+=", "),o+=t.dump);t.tag=a,t.dump="["+o+"]"}function b(t,e,n,r){var i,o,a="",u=t.tag;for(i=0,o=n.length;i<o;i+=1)C(t,e+1,n[i],!0,!0)&&(r&&0===i||(a+=s(t,e)),a+="- "+t.dump);t.tag=u,t.dump=a||"[]"}function k(t,e,n){var r,i,o,a,s,u="",c=t.tag,f=Object.keys(n);for(r=0,i=f.length;r<i;r+=1)s="",0!==r&&(s+=", "),o=f[r],a=n[o],C(t,e,o,!1,!1)&&(t.dump.length>1024&&(s+="? "),s+=t.dump+": ",C(t,e,a,!1,!1)&&(s+=t.dump,u+=s));t.tag=c,t.dump="{"+u+"}"}function x(t,e,n,r){var i,o,a,u,c,f,l="",h=t.tag,d=Object.keys(n);if(t.sortKeys===!0)d.sort();else if("function"==typeof t.sortKeys)d.sort(t.sortKeys);else if(t.sortKeys)throw new j("sortKeys must be a boolean or a function");for(i=0,o=d.length;i<o;i+=1)f="",r&&0===i||(f+=s(t,e)),a=d[i],u=n[a],C(t,e+1,a,!0,!0,!0)&&(c=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024,c&&(f+=t.dump&&B===t.dump.charCodeAt(0)?"?":"? "),f+=t.dump,c&&(f+=s(t,e)),C(t,e+1,u,!0,c)&&(f+=t.dump&&B===t.dump.charCodeAt(0)?":":": ",f+=t.dump,l+=f));t.tag=h,t.dump=l||"{}"}function A(t,e,n){var r,i,o,a,s,u;for(i=n?t.explicitTypes:t.implicitTypes,o=0,a=i.length;o<a;o+=1)if(s=i[o],(s.instanceOf||s.predicate)&&(!s.instanceOf||"object"==typeof e&&e instanceof s.instanceOf)&&(!s.predicate||s.predicate(e))){if(t.tag=n?s.tag:"?",s.represent){if(u=t.styleMap[s.tag]||s.defaultStyle,"[object Function]"===F.call(s.represent))r=s.represent(e,u);else{if(!R.call(s.represent,u))throw new j("!<"+s.tag+'> tag resolver accepts not "'+u+'" style');r=s.represent[u](e,u)}t.dump=r}return!0}return!1}function C(t,e,n,r,i,o){t.tag=null,t.dump=n,A(t,n,!1)||A(t,n,!0);var a=F.call(t.dump);r&&(r=t.flowLevel<0||t.flowLevel>e);var s,u,c="[object Object]"===a||"[object Array]"===a;if(c&&(s=t.duplicates.indexOf(n),u=s!==-1),(null!==t.tag&&"?"!==t.tag||u||2!==t.indent&&e>0)&&(i=!1),u&&t.usedDuplicates[s])t.dump="*ref_"+s;else{if(c&&u&&!t.usedDuplicates[s]&&(t.usedDuplicates[s]=!0),"[object Object]"===a)r&&0!==Object.keys(t.dump).length?(x(t,e,t.dump,i),u&&(t.dump="&ref_"+s+t.dump)):(k(t,e,t.dump),u&&(t.dump="&ref_"+s+" "+t.dump));else if("[object Array]"===a)r&&0!==t.dump.length?(b(t,e,t.dump,i),u&&(t.dump="&ref_"+s+t.dump)):(w(t,e,t.dump),u&&(t.dump="&ref_"+s+" "+t.dump));else{if("[object String]"!==a){if(t.skipInvalid)return!1;throw new j("unacceptable kind of an object to dump "+a)}"?"!==t.tag&&p(t,t.dump,e,o)}null!==t.tag&&"?"!==t.tag&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function S(t,e){var n,r,i=[],o=[];for(E(t,i,o),n=0,r=o.length;n<r;n+=1)e.duplicates.push(i[o[n]]);e.usedDuplicates=new Array(r)}function E(t,e,n){var r,i,o;if(null!==t&&"object"==typeof t)if(i=e.indexOf(t),i!==-1)n.indexOf(i)===-1&&n.push(i);else if(e.push(t),Array.isArray(t))for(i=0,o=t.length;i<o;i+=1)E(t[i],e,n);else for(r=Object.keys(t),i=0,o=r.length;i<o;i+=1)E(t[r[i]],e,n)}function I(t,e){e=e||{};var n=new o(e);return n.noRefs||S(t,n),C(n,0,t,!0,!0)?n.dump+"\n":""}function O(t,e){return I(t,z.extend({schema:N},e))}var z=t("./common"),j=t("./exception"),T=t("./schema/default_full"),N=t("./schema/default_safe"),F=Object.prototype.toString,R=Object.prototype.hasOwnProperty,D=9,B=10,L=32,U=33,P=34,M=35,W=37,Z=38,q=39,Y=42,H=44,G=45,K=58,$=62,V=63,X=64,J=91,Q=93,tt=96,et=123,nt=124,rt=125,it={};it[0]="\\0",it[7]="\\a",it[8]="\\b",it[9]="\\t",it[10]="\\n",it[11]="\\v",it[12]="\\f",it[13]="\\r",it[27]="\\e",it[34]='\\"',it[92]="\\\\",it[133]="\\N",it[160]="\\_",it[8232]="\\L",it[8233]="\\P";var ot=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],at=1,st=2,ut=3,ct=4,ft=5;e.exports.dump=I,e.exports.safeDump=O},{"./common":2,"./exception":4,"./schema/default_full":9,"./schema/default_safe":10}],4:[function(t,e,n){"use strict";function r(t,e){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||"",this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():"")}r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r.prototype.toString=function(t){var e=this.name+": ";return e+=this.reason||"(unknown reason)",!t&&this.mark&&(e+=" "+this.mark.toString()),e},e.exports=r},{}],5:[function(t,e,n){"use strict";function r(t){return 10===t||13===t}function i(t){return 9===t||32===t}function o(t){return 9===t||32===t||10===t||13===t}function a(t){return 44===t||91===t||93===t||123===t||125===t}function s(t){var e;return 48<=t&&t<=57?t-48:(e=32|t,97<=e&&e<=102?e-97+10:-1)}function u(t){return 120===t?2:117===t?4:85===t?8:0}function c(t){return 48<=t&&t<=57?t-48:-1}function f(t){return 48===t?"\0":97===t?"":98===t?"\b":116===t?"\t":9===t?"\t":110===t?"\n":118===t?"\x0B":102===t?"\f":114===t?"\r":101===t?"":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"Â…":95===t?" ":76===t?"\u2028":80===t?"\u2029":""}function l(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}function h(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||q,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function d(t,e){return new M(e,new W(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function p(t,e){throw d(t,e)}function _(t,e){t.onWarning&&t.onWarning.call(null,d(t,e))}function g(t,e,n,r){var i,o,a,s;if(e<n){if(s=t.input.slice(e,n),r)for(i=0,o=s.length;i<o;i+=1)a=s.charCodeAt(i),9===a||32<=a&&a<=1114111||p(t,"expected valid JSON character");else Q.test(s)&&p(t,"the stream contains non-printable characters");t.result+=s}}function m(t,e,n,r){var i,o,a,s;for(P.isObject(n)||p(t,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(n),a=0,s=i.length;a<s;a+=1)o=i[a],Y.call(e,o)||(e[o]=n[o],r[o]=!0)}function v(t,e,n,r,i,o){var a,s;if(i=String(i),null===e&&(e={}),"tag:yaml.org,2002:merge"===r)if(Array.isArray(o))for(a=0,s=o.length;a<s;a+=1)m(t,e,o[a],n);else m(t,e,o,n);else t.json||Y.call(n,i)||!Y.call(e,i)||p(t,"duplicated mapping key"),e[i]=o,delete n[i];return e}function y(t){var e;e=t.input.charCodeAt(t.position),10===e?t.position++:13===e?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):p(t,"a line break is expected"),t.line+=1,t.lineStart=t.position}function w(t,e,n){for(var o=0,a=t.input.charCodeAt(t.position);0!==a;){for(;i(a);)a=t.input.charCodeAt(++t.position);if(e&&35===a)do a=t.input.charCodeAt(++t.position);while(10!==a&&13!==a&&0!==a);if(!r(a))break;for(y(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position)}return n!==-1&&0!==o&&t.lineIndent<n&&_(t,"deficient indentation"),o}function b(t){var e,n=t.position;return e=t.input.charCodeAt(n),!(45!==e&&46!==e||e!==t.input.charCodeAt(n+1)||e!==t.input.charCodeAt(n+2)||(n+=3,e=t.input.charCodeAt(n),0!==e&&!o(e)))}function k(t,e){1===e?t.result+=" ":e>1&&(t.result+=P.repeat("\n",e-1))}function x(t,e,n){var s,u,c,f,l,h,d,p,_,m=t.kind,v=t.result;if(_=t.input.charCodeAt(t.position),o(_)||a(_)||35===_||38===_||42===_||33===_||124===_||62===_||39===_||34===_||37===_||64===_||96===_)return!1;if((63===_||45===_)&&(u=t.input.charCodeAt(t.position+1),o(u)||n&&a(u)))return!1;for(t.kind="scalar",t.result="",c=f=t.position,l=!1;0!==_;){if(58===_){if(u=t.input.charCodeAt(t.position+1),o(u)||n&&a(u))break}else if(35===_){if(s=t.input.charCodeAt(t.position-1),o(s))break}else{if(t.position===t.lineStart&&b(t)||n&&a(_))break;if(r(_)){if(h=t.line,d=t.lineStart,p=t.lineIndent,w(t,!1,-1),t.lineIndent>=e){l=!0,_=t.input.charCodeAt(t.position);continue}t.position=f,t.line=h,t.lineStart=d,t.lineIndent=p;break}}l&&(g(t,c,f,!1),k(t,t.line-h),c=f=t.position,l=!1),i(_)||(f=t.position+1),_=t.input.charCodeAt(++t.position)}return g(t,c,f,!1),!!t.result||(t.kind=m,t.result=v,!1)}function A(t,e){var n,i,o;if(n=t.input.charCodeAt(t.position),39!==n)return!1;for(t.kind="scalar",t.result="",t.position++,i=o=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(g(t,i,t.position,!0),n=t.input.charCodeAt(++t.position),39!==n)return!0;i=o=t.position,t.position++}else r(n)?(g(t,i,o,!0),k(t,w(t,!1,e)),i=o=t.position):t.position===t.lineStart&&b(t)?p(t,"unexpected end of the document within a single quoted scalar"):(t.position++,o=t.position);p(t,"unexpected end of the stream within a single quoted scalar")}function C(t,e){var n,i,o,a,c,f;if(f=t.input.charCodeAt(t.position),34!==f)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(f=t.input.charCodeAt(t.position));){if(34===f)return g(t,n,t.position,!0),t.position++,!0;if(92===f){if(g(t,n,t.position,!0),f=t.input.charCodeAt(++t.position),r(f))w(t,!1,e);else if(f<256&&it[f])t.result+=ot[f],t.position++;else if((c=u(f))>0){for(o=c,a=0;o>0;o--)f=t.input.charCodeAt(++t.position),(c=s(f))>=0?a=(a<<4)+c:p(t,"expected hexadecimal character");t.result+=l(a),t.position++}else p(t,"unknown escape sequence");n=i=t.position}else r(f)?(g(t,n,i,!0),k(t,w(t,!1,e)),n=i=t.position):t.position===t.lineStart&&b(t)?p(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}p(t,"unexpected end of the stream within a double quoted scalar")}function S(t,e){var n,r,i,a,s,u,c,f,l,h,d,_=!0,g=t.tag,m=t.anchor,y={};if(d=t.input.charCodeAt(t.position),91===d)a=93,c=!1,r=[];else{if(123!==d)return!1;a=125,c=!0,r={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=r),d=t.input.charCodeAt(++t.position);0!==d;){if(w(t,!0,e),d=t.input.charCodeAt(t.position),d===a)return t.position++,t.tag=g,t.anchor=m,t.kind=c?"mapping":"sequence",t.result=r,!0;_||p(t,"missed comma between flow collection entries"),l=f=h=null,s=u=!1,63===d&&(i=t.input.charCodeAt(t.position+1),o(i)&&(s=u=!0,t.position++,w(t,!0,e))),n=t.line,N(t,e,H,!1,!0),l=t.tag,f=t.result,w(t,!0,e),d=t.input.charCodeAt(t.position),!u&&t.line!==n||58!==d||(s=!0,d=t.input.charCodeAt(++t.position),w(t,!0,e),N(t,e,H,!1,!0),h=t.result),c?v(t,r,y,l,f,h):s?r.push(v(t,null,y,l,f,h)):r.push(f),w(t,!0,e),d=t.input.charCodeAt(t.position),44===d?(_=!0,d=t.input.charCodeAt(++t.position)):_=!1}p(t,"unexpected end of the stream within a flow collection")}function E(t,e){var n,o,a,s,u=V,f=!1,l=!1,h=e,d=0,_=!1;if(s=t.input.charCodeAt(t.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(t.kind="scalar",t.result="";0!==s;)if(s=t.input.charCodeAt(++t.position),43===s||45===s)V===u?u=43===s?J:X:p(t,"repeat of a chomping mode identifier");else{if(!((a=c(s))>=0))break;0===a?p(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?p(t,"repeat of an indentation width identifier"):(h=e+a-1,l=!0)}if(i(s)){do s=t.input.charCodeAt(++t.position);while(i(s));if(35===s)do s=t.input.charCodeAt(++t.position);while(!r(s)&&0!==s)}for(;0!==s;){for(y(t),t.lineIndent=0,s=t.input.charCodeAt(t.position);(!l||t.lineIndent<h)&&32===s;)t.lineIndent++,s=t.input.charCodeAt(++t.position);if(!l&&t.lineIndent>h&&(h=t.lineIndent),r(s))d++;else{if(t.lineIndent<h){u===J?t.result+=P.repeat("\n",f?1+d:d):u===V&&f&&(t.result+="\n");break}for(o?i(s)?(_=!0,t.result+=P.repeat("\n",f?1+d:d)):_?(_=!1,t.result+=P.repeat("\n",d+1)):0===d?f&&(t.result+=" "):t.result+=P.repeat("\n",d):t.result+=P.repeat("\n",f?1+d:d),f=!0,l=!0,d=0,n=t.position;!r(s)&&0!==s;)s=t.input.charCodeAt(++t.position);g(t,n,t.position,!1)}}return!0}function I(t,e){var n,r,i,a=t.tag,s=t.anchor,u=[],c=!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=u),i=t.input.charCodeAt(t.position);0!==i&&45===i&&(r=t.input.charCodeAt(t.position+1),o(r));)if(c=!0,t.position++,w(t,!0,-1)&&t.lineIndent<=e)u.push(null),i=t.input.charCodeAt(t.position);else if(n=t.line,N(t,e,K,!1,!0),u.push(t.result),w(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>e)&&0!==i)p(t,"bad indentation of a sequence entry");else if(t.lineIndent<e)break;return!!c&&(t.tag=a,t.anchor=s,t.kind="sequence",t.result=u,!0)}function O(t,e,n){var r,a,s,u,c=t.tag,f=t.anchor,l={},h={},d=null,_=null,g=null,m=!1,y=!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=l),u=t.input.charCodeAt(t.position);0!==u;){if(r=t.input.charCodeAt(t.position+1),s=t.line,63!==u&&58!==u||!o(r)){if(!N(t,n,G,!1,!0))break;if(t.line===s){for(u=t.input.charCodeAt(t.position);i(u);)u=t.input.charCodeAt(++t.position);if(58===u)u=t.input.charCodeAt(++t.position),o(u)||p(t,"a whitespace character is expected after the key-value separator within a block mapping"),m&&(v(t,l,h,d,_,null),d=_=g=null),y=!0,m=!1,a=!1,d=t.tag,_=t.result;else{if(!y)return t.tag=c,t.anchor=f,!0;p(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!y)return t.tag=c,t.anchor=f,!0;p(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===u?(m&&(v(t,l,h,d,_,null),d=_=g=null),y=!0,m=!0,a=!0):m?(m=!1,a=!0):p(t,"incomplete explicit mapping pair; a key node is missed"),t.position+=1,u=r;if((t.line===s||t.lineIndent>e)&&(N(t,e,$,!0,a)&&(m?_=t.result:g=t.result),m||(v(t,l,h,d,_,g),d=_=g=null),w(t,!0,-1),u=t.input.charCodeAt(t.position)),t.lineIndent>e&&0!==u)p(t,"bad indentation of a mapping entry");else if(t.lineIndent<e)break}return m&&v(t,l,h,d,_,null),y&&(t.tag=c,t.anchor=f,t.kind="mapping",t.result=l),y}function z(t){var e,n,r,i,a=!1,s=!1;if(i=t.input.charCodeAt(t.position),33!==i)return!1;if(null!==t.tag&&p(t,"duplication of a tag property"),i=t.input.charCodeAt(++t.position),60===i?(a=!0,i=t.input.charCodeAt(++t.position)):33===i?(s=!0,n="!!",i=t.input.charCodeAt(++t.position)):n="!",e=t.position,a){do i=t.input.charCodeAt(++t.position);while(0!==i&&62!==i);t.position<t.length?(r=t.input.slice(e,t.position),i=t.input.charCodeAt(++t.position)):p(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==i&&!o(i);)33===i&&(s?p(t,"tag suffix cannot contain exclamation marks"):(n=t.input.slice(e-1,t.position+1),nt.test(n)||p(t,"named tag handle cannot contain such characters"),s=!0,e=t.position+1)),i=t.input.charCodeAt(++t.position);r=t.input.slice(e,t.position),et.test(r)&&p(t,"tag suffix cannot contain flow indicator characters")}return r&&!rt.test(r)&&p(t,"tag name cannot contain such characters: "+r),a?t.tag=r:Y.call(t.tagMap,n)?t.tag=t.tagMap[n]+r:"!"===n?t.tag="!"+r:"!!"===n?t.tag="tag:yaml.org,2002:"+r:p(t,'undeclared tag handle "'+n+'"'),!0}function j(t){var e,n;if(n=t.input.charCodeAt(t.position),38!==n)return!1;for(null!==t.anchor&&p(t,"duplication of an anchor property"),n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!o(n)&&!a(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&p(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(e,t.position),!0}function T(t){var e,n,r;if(r=t.input.charCodeAt(t.position),42!==r)return!1;for(r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!o(r)&&!a(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&p(t,"name of an alias node must contain at least one character"),n=t.input.slice(e,t.position),t.anchorMap.hasOwnProperty(n)||p(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],w(t,!0,-1),!0}function N(t,e,n,r,i){var o,a,s,u,c,f,l,h,d=1,_=!1,g=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,o=a=s=$===n||K===n,r&&w(t,!0,-1)&&(_=!0,t.lineIndent>e?d=1:t.lineIndent===e?d=0:t.lineIndent<e&&(d=-1)),1===d)for(;z(t)||j(t);)w(t,!0,-1)?(_=!0,s=o,t.lineIndent>e?d=1:t.lineIndent===e?d=0:t.lineIndent<e&&(d=-1)):s=!1;if(s&&(s=_||i),1!==d&&$!==n||(l=H===n||G===n?e:e+1,h=t.position-t.lineStart,1===d?s&&(I(t,h)||O(t,h,l))||S(t,l)?g=!0:(a&&E(t,l)||A(t,l)||C(t,l)?g=!0:T(t)?(g=!0,null===t.tag&&null===t.anchor||p(t,"alias node should not have any properties")):x(t,l,H===n)&&(g=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===d&&(g=s&&I(t,h))),null!==t.tag&&"!"!==t.tag)if("?"===t.tag){for(u=0,c=t.implicitTypes.length;u<c;u+=1)if(f=t.implicitTypes[u],f.resolve(t.result)){t.result=f.construct(t.result),t.tag=f.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else Y.call(t.typeMap,t.tag)?(f=t.typeMap[t.tag],null!==t.result&&f.kind!==t.kind&&p(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+f.kind+'", not "'+t.kind+'"'),f.resolve(t.result)?(t.result=f.construct(t.result),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):p(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):p(t,"unknown tag !<"+t.tag+">");return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function F(t){var e,n,a,s,u=t.position,c=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};0!==(s=t.input.charCodeAt(t.position))&&(w(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==s));){for(c=!0,s=t.input.charCodeAt(++t.position),e=t.position;0!==s&&!o(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(e,t.position),a=[],n.length<1&&p(t,"directive name must not be less than one character in length");0!==s;){for(;i(s);)s=t.input.charCodeAt(++t.position);if(35===s){do s=t.input.charCodeAt(++t.position);while(0!==s&&!r(s));break}if(r(s))break;for(e=t.position;0!==s&&!o(s);)s=t.input.charCodeAt(++t.position);a.push(t.input.slice(e,t.position))}0!==s&&y(t),Y.call(st,n)?st[n](t,n,a):_(t,'unknown document directive "'+n+'"')}return w(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,w(t,!0,-1)):c&&p(t,"directives end mark is expected"),N(t,t.lineIndent-1,$,!1,!0),w(t,!0,-1),t.checkLineBreaks&&tt.test(t.input.slice(u,t.position))&&_(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&b(t)?void(46===t.input.charCodeAt(t.position)&&(t.position+=3,w(t,!0,-1))):void(t.position<t.length-1&&p(t,"end of the stream or a document separator is expected"))}function R(t,e){t=String(t),e=e||{},0!==t.length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var n=new h(t,e);for(n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)F(n);return n.documents}function D(t,e,n){var r,i,o=R(t,n);for(r=0,i=o.length;r<i;r+=1)e(o[r])}function B(t,e){var n=R(t,e);if(0!==n.length){if(1===n.length)return n[0];throw new M("expected a single document in the stream, but found more")}}function L(t,e,n){D(t,e,P.extend({schema:Z},n))}function U(t,e){return B(t,P.extend({schema:Z},e))}for(var P=t("./common"),M=t("./exception"),W=t("./mark"),Z=t("./schema/default_safe"),q=t("./schema/default_full"),Y=Object.prototype.hasOwnProperty,H=1,G=2,K=3,$=4,V=1,X=2,J=3,Q=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,tt=/[\x85\u2028\u2029]/,et=/[,\[\]\{\}]/,nt=/^(?:!|!!|![a-z\-]+!)$/i,rt=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,it=new Array(256),ot=new Array(256),at=0;at<256;at++)it[at]=f(at)?1:0,ot[at]=f(at);var st={YAML:function(t,e,n){var r,i,o;null!==t.version&&p(t,"duplication of %YAML directive"),1!==n.length&&p(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),null===r&&p(t,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),o=parseInt(r[2],10),1!==i&&p(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&_(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var r,i;2!==n.length&&p(t,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],nt.test(r)||p(t,"ill-formed tag handle (first argument) of the TAG directive"),Y.call(t.tagMap,r)&&p(t,'there is a previously declared suffix for "'+r+'" tag handle'),rt.test(i)||p(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[r]=i}};e.exports.loadAll=D,e.exports.load=B,e.exports.safeLoadAll=L,e.exports.safeLoad=U},{"./common":2,"./exception":4,"./mark":6,"./schema/default_full":9,"./schema/default_safe":10}],6:[function(t,e,n){"use strict";function r(t,e,n,r,i){this.name=t,this.buffer=e,this.position=n,this.line=r,this.column=i}var i=t("./common");r.prototype.getSnippet=function(t,e){var n,r,o,a,s;if(!this.buffer)return null;for(t=t||4,e=e||75,n="",r=this.position;r>0&&"\0\r\nÂ…\u2028\u2029".indexOf(this.buffer.charAt(r-1))===-1;)if(r-=1,this.position-r>e/2-1){n=" ... ",r+=5;break}for(o="",a=this.position;a<this.buffer.length&&"\0\r\nÂ…\u2028\u2029".indexOf(this.buffer.charAt(a))===-1;)if(a+=1,a-this.position>e/2-1){o=" ... ",a-=5;break}return s=this.buffer.slice(r,a),i.repeat(" ",t)+n+s+o+"\n"+i.repeat(" ",t+this.position-r+n.length)+"^"},r.prototype.toString=function(t){var e,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),t||(e=this.getSnippet(),e&&(n+=":\n"+e)),n},e.exports=r},{"./common":2}],7:[function(t,e,n){"use strict";function r(t,e,n){var i=[];return t.include.forEach(function(t){n=r(t,e,n)}),t[e].forEach(function(t){n.forEach(function(e,n){e.tag===t.tag&&i.push(n)}),n.push(t)}),n.filter(function(t,e){return i.indexOf(e)===-1})}function i(){function t(t){r[t.tag]=t}var e,n,r={};for(e=0,n=arguments.length;e<n;e+=1)arguments[e].forEach(t);return r}function o(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(t){if(t.loadKind&&"scalar"!==t.loadKind)throw new s("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=r(this,"implicit",[]),this.compiledExplicit=r(this,"explicit",[]),this.compiledTypeMap=i(this.compiledImplicit,this.compiledExplicit)}var a=t("./common"),s=t("./exception"),u=t("./type");o.DEFAULT=null,o.create=function(){var t,e;switch(arguments.length){case 1:t=o.DEFAULT,e=arguments[0];break;case 2:t=arguments[0],e=arguments[1];break;default:throw new s("Wrong number of arguments for Schema.create function")}if(t=a.toArray(t),e=a.toArray(e),!t.every(function(t){return t instanceof o}))throw new s("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!e.every(function(t){return t instanceof u}))throw new s("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new o({include:t,explicit:e})},e.exports=o},{"./common":2,"./exception":4,"./type":13}],8:[function(t,e,n){"use strict";var r=t("../schema");e.exports=new r({include:[t("./json")]})},{"../schema":7,"./json":12}],9:[function(t,e,n){"use strict";var r=t("../schema");e.exports=r.DEFAULT=new r({include:[t("./default_safe")],explicit:[t("../type/js/undefined"),t("../type/js/regexp"),t("../type/js/function")]})},{"../schema":7,"../type/js/function":18,"../type/js/regexp":19,"../type/js/undefined":20,"./default_safe":10}],10:[function(t,e,n){"use strict";var r=t("../schema");e.exports=new r({include:[t("./core")],implicit:[t("../type/timestamp"),t("../type/merge")],explicit:[t("../type/binary"),t("../type/omap"),t("../type/pairs"),t("../type/set")]})},{"../schema":7,"../type/binary":14,"../type/merge":22,"../type/omap":24,"../type/pairs":25,"../type/set":27,"../type/timestamp":29,"./core":8}],11:[function(t,e,n){"use strict";var r=t("../schema");e.exports=new r({explicit:[t("../type/str"),t("../type/seq"),t("../type/map")]})},{"../schema":7,"../type/map":21,"../type/seq":26,"../type/str":28}],12:[function(t,e,n){"use strict";var r=t("../schema");e.exports=new r({include:[t("./failsafe")],implicit:[t("../type/null"),t("../type/bool"),t("../type/int"),t("../type/float")]})},{"../schema":7,"../type/bool":15,"../type/float":16,"../type/int":17,"../type/null":23,"./failsafe":11}],13:[function(t,e,n){"use strict";function r(t){var e={};return null!==t&&Object.keys(t).forEach(function(n){t[n].forEach(function(t){e[String(t)]=n})}),e}function i(t,e){if(e=e||{},Object.keys(e).forEach(function(e){if(a.indexOf(e)===-1)throw new o('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=r(e.styleAliases||null),s.indexOf(this.kind)===-1)throw new o('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var o=t("./exception"),a=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],s=["scalar","sequence","mapping"];e.exports=i},{"./exception":4}],14:[function(t,e,n){"use strict";function r(t){if(null===t)return!1;var e,n,r=0,i=t.length,o=l;for(n=0;n<i;n++)if(e=o.indexOf(t.charAt(n)),!(e>64)){if(e<0)return!1;r+=6}return r%8===0}function i(t){var e,n,r=t.replace(/[\r\n=]/g,""),i=r.length,o=l,a=0,u=[];for(e=0;e<i;e++)e%4===0&&e&&(u.push(a>>16&255),u.push(a>>8&255),u.push(255&a)),a=a<<6|o.indexOf(r.charAt(e));return n=i%4*6,0===n?(u.push(a>>16&255),u.push(a>>8&255),u.push(255&a)):18===n?(u.push(a>>10&255),u.push(a>>2&255)):12===n&&u.push(a>>4&255),s?new s(u):u}function o(t){var e,n,r="",i=0,o=t.length,a=l;for(e=0;e<o;e++)e%3===0&&e&&(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]),i=(i<<8)+t[e];return n=o%3,0===n?(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]):2===n?(r+=a[i>>10&63],r+=a[i>>4&63],r+=a[i<<2&63],r+=a[64]):1===n&&(r+=a[i>>2&63],r+=a[i<<4&63],r+=a[64],r+=a[64]),r}function a(t){return s&&s.isBuffer(t)}var s;try{var u=t;s=u("buffer").Buffer;
 }catch(c){}var f=t("../type"),l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";e.exports=new f("tag:yaml.org,2002:binary",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../type":13}],15:[function(t,e,n){"use strict";function r(t){if(null===t)return!1;var e=t.length;return 4===e&&("true"===t||"True"===t||"TRUE"===t)||5===e&&("false"===t||"False"===t||"FALSE"===t)}function i(t){return"true"===t||"True"===t||"TRUE"===t}function o(t){return"[object Boolean]"===Object.prototype.toString.call(t)}var a=t("../type");e.exports=new a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:r,construct:i,predicate:o,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(t,e,n){"use strict";function r(t){return null!==t&&!!c.test(t)}function i(t){var e,n,r,i;return e=t.replace(/_/g,"").toLowerCase(),n="-"===e[0]?-1:1,i=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(t){i.unshift(parseFloat(t,10))}),e=0,r=1,i.forEach(function(t){e+=t*r,r*=60}),n*e):n*parseFloat(e,10)}function o(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(s.isNegativeZero(t))return"-0.0";return n=t.toString(10),f.test(n)?n.replace("e",".e"):n}function a(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!==0||s.isNegativeZero(t))}var s=t("../common"),u=t("../type"),c=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),f=/^[-+]?[0-9]+e/;e.exports=new u("tag:yaml.org,2002:float",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o,defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(t,e,n){"use strict";function r(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function i(t){return 48<=t&&t<=55}function o(t){return 48<=t&&t<=57}function a(t){if(null===t)return!1;var e,n=t.length,a=0,s=!1;if(!n)return!1;if(e=t[a],"-"!==e&&"+"!==e||(e=t[++a]),"0"===e){if(a+1===n)return!0;if(e=t[++a],"b"===e){for(a++;a<n;a++)if(e=t[a],"_"!==e){if("0"!==e&&"1"!==e)return!1;s=!0}return s}if("x"===e){for(a++;a<n;a++)if(e=t[a],"_"!==e){if(!r(t.charCodeAt(a)))return!1;s=!0}return s}for(;a<n;a++)if(e=t[a],"_"!==e){if(!i(t.charCodeAt(a)))return!1;s=!0}return s}for(;a<n;a++)if(e=t[a],"_"!==e){if(":"===e)break;if(!o(t.charCodeAt(a)))return!1;s=!0}return!!s&&(":"!==e||/^(:[0-5]?[0-9])+$/.test(t.slice(a)))}function s(t){var e,n,r=t,i=1,o=[];return r.indexOf("_")!==-1&&(r=r.replace(/_/g,"")),e=r[0],"-"!==e&&"+"!==e||("-"===e&&(i=-1),r=r.slice(1),e=r[0]),"0"===r?0:"0"===e?"b"===r[1]?i*parseInt(r.slice(2),2):"x"===r[1]?i*parseInt(r,16):i*parseInt(r,8):r.indexOf(":")!==-1?(r.split(":").forEach(function(t){o.unshift(parseInt(t,10))}),r=0,n=1,o.forEach(function(t){r+=t*n,n*=60}),i*r):i*parseInt(r,10)}function u(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1===0&&!c.isNegativeZero(t)}var c=t("../common"),f=t("../type");e.exports=new f("tag:yaml.org,2002:int",{kind:"scalar",resolve:a,construct:s,predicate:u,represent:{binary:function(t){return"0b"+t.toString(2)},octal:function(t){return"0"+t.toString(8)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return"0x"+t.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},{"../common":2,"../type":13}],18:[function(t,e,n){"use strict";function r(t){if(null===t)return!1;try{var e="("+t+")",n=s.parse(e,{range:!0});return"Program"===n.type&&1===n.body.length&&"ExpressionStatement"===n.body[0].type&&"FunctionExpression"===n.body[0].expression.type}catch(r){return!1}}function i(t){var e,n="("+t+")",r=s.parse(n,{range:!0}),i=[];if("Program"!==r.type||1!==r.body.length||"ExpressionStatement"!==r.body[0].type||"FunctionExpression"!==r.body[0].expression.type)throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(t){i.push(t.name)}),e=r.body[0].expression.body.range,new Function(i,n.slice(e[0]+1,e[1]-1))}function o(t){return t.toString()}function a(t){return"[object Function]"===Object.prototype.toString.call(t)}var s;try{var u=t;s=u("esprima")}catch(c){"undefined"!=typeof window&&(s=window.esprima)}var f=t("../../type");e.exports=new f("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../../type":13}],19:[function(t,e,n){"use strict";function r(t){if(null===t)return!1;if(0===t.length)return!1;var e=t,n=/\/([gim]*)$/.exec(t),r="";if("/"===e[0]){if(n&&(r=n[1]),r.length>3)return!1;if("/"!==e[e.length-r.length-1])return!1}return!0}function i(t){var e=t,n=/\/([gim]*)$/.exec(t),r="";return"/"===e[0]&&(n&&(r=n[1]),e=e.slice(1,e.length-r.length-1)),new RegExp(e,r)}function o(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function a(t){return"[object RegExp]"===Object.prototype.toString.call(t)}var s=t("../../type");e.exports=new s("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../../type":13}],20:[function(t,e,n){"use strict";function r(){return!0}function i(){}function o(){return""}function a(t){return"undefined"==typeof t}var s=t("../../type");e.exports=new s("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:r,construct:i,predicate:a,represent:o})},{"../../type":13}],21:[function(t,e,n){"use strict";var r=t("../type");e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})},{"../type":13}],22:[function(t,e,n){"use strict";function r(t){return"<<"===t||null===t}var i=t("../type");e.exports=new i("tag:yaml.org,2002:merge",{kind:"scalar",resolve:r})},{"../type":13}],23:[function(t,e,n){"use strict";function r(t){if(null===t)return!0;var e=t.length;return 1===e&&"~"===t||4===e&&("null"===t||"Null"===t||"NULL"===t)}function i(){return null}function o(t){return null===t}var a=t("../type");e.exports=new a("tag:yaml.org,2002:null",{kind:"scalar",resolve:r,construct:i,predicate:o,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":13}],24:[function(t,e,n){"use strict";function r(t){if(null===t)return!0;var e,n,r,i,o,u=[],c=t;for(e=0,n=c.length;e<n;e+=1){if(r=c[e],o=!1,"[object Object]"!==s.call(r))return!1;for(i in r)if(a.call(r,i)){if(o)return!1;o=!0}if(!o)return!1;if(u.indexOf(i)!==-1)return!1;u.push(i)}return!0}function i(t){return null!==t?t:[]}var o=t("../type"),a=Object.prototype.hasOwnProperty,s=Object.prototype.toString;e.exports=new o("tag:yaml.org,2002:omap",{kind:"sequence",resolve:r,construct:i})},{"../type":13}],25:[function(t,e,n){"use strict";function r(t){if(null===t)return!0;var e,n,r,i,o,s=t;for(o=new Array(s.length),e=0,n=s.length;e<n;e+=1){if(r=s[e],"[object Object]"!==a.call(r))return!1;if(i=Object.keys(r),1!==i.length)return!1;o[e]=[i[0],r[i[0]]]}return!0}function i(t){if(null===t)return[];var e,n,r,i,o,a=t;for(o=new Array(a.length),e=0,n=a.length;e<n;e+=1)r=a[e],i=Object.keys(r),o[e]=[i[0],r[i[0]]];return o}var o=t("../type"),a=Object.prototype.toString;e.exports=new o("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:r,construct:i})},{"../type":13}],26:[function(t,e,n){"use strict";var r=t("../type");e.exports=new r("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}})},{"../type":13}],27:[function(t,e,n){"use strict";function r(t){if(null===t)return!0;var e,n=t;for(e in n)if(a.call(n,e)&&null!==n[e])return!1;return!0}function i(t){return null!==t?t:{}}var o=t("../type"),a=Object.prototype.hasOwnProperty;e.exports=new o("tag:yaml.org,2002:set",{kind:"mapping",resolve:r,construct:i})},{"../type":13}],28:[function(t,e,n){"use strict";var r=t("../type");e.exports=new r("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}})},{"../type":13}],29:[function(t,e,n){"use strict";function r(t){return null!==t&&(null!==s.exec(t)||null!==u.exec(t))}function i(t){var e,n,r,i,o,a,c,f,l,h,d=0,p=null;if(e=s.exec(t),null===e&&(e=u.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],r=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(n,r,i));if(o=+e[4],a=+e[5],c=+e[6],e[7]){for(d=e[7].slice(0,3);d.length<3;)d+="0";d=+d}return e[9]&&(f=+e[10],l=+(e[11]||0),p=6e4*(60*f+l),"-"===e[9]&&(p=-p)),h=new Date(Date.UTC(n,r,i,o,a,c,d)),p&&h.setTime(h.getTime()-p),h}function o(t){return t.toISOString()}var a=t("../type"),s=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),u=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");e.exports=new a("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:r,construct:i,instanceOf:Date,represent:o})},{"../type":13}],"/":[function(t,e,n){"use strict";var r=t("./lib/js-yaml.js");e.exports=r},{"./lib/js-yaml.js":1}]},{},[])("/")}),function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.JSZip=t()}}(function(){var t;return function e(t,n,r){function i(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[a]={exports:{}};t[a][0].call(f.exports,function(e){var n=t[a][1][e];return i(n?n:e)},f,f.exports,e,t,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(t,e,n){"use strict";var r=t("./utils"),i=t("./support"),o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.encode=function(t){for(var e,n,i,a,s,u,c,f=[],l=0,h=t.length,d=h,p="string"!==r.getTypeOf(t);l<t.length;)d=h-l,p?(e=t[l++],n=l<h?t[l++]:0,i=l<h?t[l++]:0):(e=t.charCodeAt(l++),n=l<h?t.charCodeAt(l++):0,i=l<h?t.charCodeAt(l++):0),a=e>>2,s=(3&e)<<4|n>>4,u=d>1?(15&n)<<2|i>>6:64,c=d>2?63&i:64,f.push(o.charAt(a)+o.charAt(s)+o.charAt(u)+o.charAt(c));return f.join("")},n.decode=function(t){var e,n,r,a,s,u,c,f=0,l=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");var h=3*t.length/4;t.charAt(t.length-1)===o.charAt(64)&&h--,t.charAt(t.length-2)===o.charAt(64)&&h--;var d;for(d=i.uint8array?new Uint8Array(h):new Array(h);f<t.length;)a=o.indexOf(t.charAt(f++)),s=o.indexOf(t.charAt(f++)),u=o.indexOf(t.charAt(f++)),c=o.indexOf(t.charAt(f++)),e=a<<2|s>>4,n=(15&s)<<4|u>>2,r=(3&u)<<6|c,d[l++]=e,64!==u&&(d[l++]=n),64!==c&&(d[l++]=r);return d}},{"./support":27,"./utils":29}],2:[function(t,e,n){"use strict";function r(t,e,n,r,i){this.compressedSize=t,this.uncompressedSize=e,this.crc32=n,this.compression=r,this.compressedContent=i}var i=t("./external"),o=t("./stream/DataWorker"),a=t("./stream/DataLengthProbe"),s=t("./stream/Crc32Probe"),a=t("./stream/DataLengthProbe");r.prototype={getContentWorker:function(){var t=new o(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),e=this;return t.on("end",function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),t},getCompressedWorker:function(){return new o(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},r.createWorkerFrom=function(t,e,n){return t.pipe(new s).pipe(new a("uncompressedSize")).pipe(e.compressWorker(n)).pipe(new a("compressedSize")).withStreamInfo("compression",e)},e.exports=r},{"./external":6,"./stream/Crc32Probe":22,"./stream/DataLengthProbe":23,"./stream/DataWorker":24}],3:[function(t,e,n){"use strict";var r=t("./stream/GenericWorker");n.STORE={magic:"\0\0",compressWorker:function(t){return new r("STORE compression")},uncompressWorker:function(){return new r("STORE decompression")}},n.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":25}],4:[function(t,e,n){"use strict";function r(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}function i(t,e,n,r){var i=s,o=r+n;t^=-1;for(var a=r;a<o;a++)t=t>>>8^i[255&(t^e[a])];return t^-1}function o(t,e,n,r){var i=s,o=r+n;t^=-1;for(var a=r;a<o;a++)t=t>>>8^i[255&(t^e.charCodeAt(a))];return t^-1}var a=t("./utils"),s=r();e.exports=function(t,e){if("undefined"==typeof t||!t.length)return 0;var n="string"!==a.getTypeOf(t);return n?i(0|e,t,t.length,0):o(0|e,t,t.length,0)}},{"./utils":29}],5:[function(t,e,n){"use strict";n.base64=!1,n.binary=!1,n.dir=!1,n.createFolders=!0,n.date=null,n.compression=null,n.compressionOptions=null,n.comment=null,n.unixPermissions=null,n.dosPermissions=null},{}],6:[function(t,e,n){"use strict";var r=t("es6-promise").Promise;e.exports={Promise:r}},{"es6-promise":37}],7:[function(t,e,n){"use strict";function r(t,e){s.call(this,"FlateWorker/"+t),this._pako=new o[t]({raw:!0,level:e.level||-1}),this.meta={};var n=this;this._pako.onData=function(t){n.push({data:t,meta:n.meta})}}var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,o=t("pako"),a=t("./utils"),s=t("./stream/GenericWorker"),u=i?"uint8array":"array";n.magic="\b\0",a.inherits(r,s),r.prototype.processChunk=function(t){this.meta=t.meta,this._pako.push(a.transformTo(u,t.data),!1)},r.prototype.flush=function(){s.prototype.flush.call(this),this._pako.push([],!0)},r.prototype.cleanUp=function(){s.prototype.cleanUp.call(this),this._pako=null},n.compressWorker=function(t){return new r("Deflate",t)},n.uncompressWorker=function(){return new r("Inflate",{})}},{"./stream/GenericWorker":25,"./utils":29,pako:38}],8:[function(t,e,n){"use strict";function r(t,e,n,r){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=n,this.encodeFileName=r,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}var i=t("../utils"),o=t("../stream/GenericWorker"),a=t("../utf8"),s=t("../crc32"),u=t("../signature"),c=function(t,e){var n,r="";for(n=0;n<e;n++)r+=String.fromCharCode(255&t),t>>>=8;return r},f=function(t,e){var n=t;return t||(n=e?16893:33204),(65535&n)<<16},l=function(t,e){return 63&(t||0)},h=function(t,e,n,r,o,h){var d,p,_=t.file,g=t.compression,m=h!==a.utf8encode,v=i.transformTo("string",h(_.name)),y=i.transformTo("string",a.utf8encode(_.name)),w=_.comment,b=i.transformTo("string",h(w)),k=i.transformTo("string",a.utf8encode(w)),x=y.length!==_.name.length,A=k.length!==w.length,C="",S="",E="",I=_.dir,O=_.date,z={crc32:0,compressedSize:0,uncompressedSize:0};e&&!n||(z.crc32=t.crc32,z.compressedSize=t.compressedSize,z.uncompressedSize=t.uncompressedSize);var j=0;e&&(j|=8),m||!x&&!A||(j|=2048);var T=0,N=0;I&&(T|=16),"UNIX"===o?(N=798,T|=f(_.unixPermissions,I)):(N=20,T|=l(_.dosPermissions,I)),d=O.getUTCHours(),d<<=6,d|=O.getUTCMinutes(),d<<=5,d|=O.getUTCSeconds()/2,p=O.getUTCFullYear()-1980,p<<=4,p|=O.getUTCMonth()+1,p<<=5,p|=O.getUTCDate(),x&&(S=c(1,1)+c(s(v),4)+y,C+="up"+c(S.length,2)+S),A&&(E=c(1,1)+c(s(b),4)+k,C+="uc"+c(E.length,2)+E);var F="";F+="\n\0",F+=c(j,2),F+=g.magic,F+=c(d,2),F+=c(p,2),F+=c(z.crc32,4),F+=c(z.compressedSize,4),F+=c(z.uncompressedSize,4),F+=c(v.length,2),F+=c(C.length,2);var R=u.LOCAL_FILE_HEADER+F+v+C,D=u.CENTRAL_FILE_HEADER+c(N,2)+F+c(b.length,2)+"\0\0\0\0"+c(T,4)+c(r,4)+v+C+b;return{fileRecord:R,dirRecord:D}},d=function(t,e,n,r,o){var a="",s=i.transformTo("string",o(r));return a=u.CENTRAL_DIRECTORY_END+"\0\0\0\0"+c(t,2)+c(t,2)+c(e,4)+c(n,4)+c(s.length,2)+s},p=function(t){var e="";return e=u.DATA_DESCRIPTOR+c(t.crc32,4)+c(t.compressedSize,4)+c(t.uncompressedSize,4)};i.inherits(r,o),r.prototype.push=function(t){var e=t.meta.percent||0,n=this.entriesCount,r=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,o.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:n?(e+100*(n-r-1))/n:100}}))},r.prototype.openedSource=function(t){if(this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name,this.streamFiles&&!t.file.dir){var e=h(t,this.streamFiles,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:e.fileRecord,meta:{percent:0}})}else this.accumulate=!0},r.prototype.closedSource=function(t){this.accumulate=!1;var e=h(t,this.streamFiles,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(e.dirRecord),this.streamFiles&&!t.file.dir)this.push({data:p(t),meta:{percent:100}});else for(this.push({data:e.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},r.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e<this.dirRecords.length;e++)this.push({data:this.dirRecords[e],meta:{percent:100}});var n=this.bytesWritten-t,r=d(this.dirRecords.length,n,t,this.zipComment,this.encodeFileName);this.push({data:r,meta:{percent:100}})},r.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},r.prototype.registerPrevious=function(t){this._sources.push(t);var e=this;return t.on("data",function(t){e.processChunk(t)}),t.on("end",function(){e.closedSource(e.previous.streamInfo),e._sources.length?e.prepareNextSource():e.end()}),t.on("error",function(t){e.error(t)}),this},r.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},r.prototype.error=function(t){var e=this._sources;if(!o.prototype.error.call(this,t))return!1;for(var n=0;n<e.length;n++)try{e[n].error(t)}catch(t){}return!0},r.prototype.lock=function(){o.prototype.lock.call(this);for(var t=this._sources,e=0;e<t.length;e++)t[e].lock()},e.exports=r},{"../crc32":4,"../signature":20,"../stream/GenericWorker":25,"../utf8":28,"../utils":29}],9:[function(t,e,n){"use strict";var r=t("../compressions"),i=t("./ZipFileWorker"),o=function(t,e){var n=t||e,i=r[n];if(!i)throw new Error(n+" is not a valid compression method !");return i};n.generateWorker=function(t,e,n){var r=new i(e.streamFiles,n,e.platform,e.encodeFileName),a=0;try{t.forEach(function(t,n){a++;var i=o(n.options.compression,e.compression),s=n.options.compressionOptions||e.compressionOptions||{},u=n.dir,c=n.date;n._compressWorker(i,s).withStreamInfo("file",{name:t,dir:u,date:c,comment:n.comment||"",unixPermissions:n.unixPermissions,dosPermissions:n.dosPermissions}).pipe(r)}),r.entriesCount=a}catch(s){r.error(s)}return r}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(t,e,n){"use strict";function r(){if(!(this instanceof r))return new r;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files={},this.comment=null,this.root="",this.clone=function(){var t=new r;for(var e in this)"function"!=typeof this[e]&&(t[e]=this[e]);return t}}r.prototype=t("./object"),r.prototype.loadAsync=t("./load"),r.support=t("./support"),r.defaults=t("./defaults"),r.loadAsync=function(t,e){return(new r).loadAsync(t,e)},r.external=t("./external"),e.exports=r},{"./defaults":5,"./external":6,"./load":11,"./object":13,"./support":27}],11:[function(t,e,n){"use strict";function r(t){return new o.Promise(function(e,n){var r=t.decompressed.getContentWorker().pipe(new u);r.on("error",function(t){n(t)}).on("end",function(){r.streamInfo.crc32!==t.decompressed.crc32?n(new Error("Corrupted zip : CRC32 mismatch")):e()}).resume()})}var i=t("./utils"),o=t("./external"),a=t("./utf8"),i=t("./utils"),s=t("./zipEntries"),u=t("./stream/Crc32Probe"),c=t("./nodejsUtils");e.exports=function(t,e){var n=this;return e=i.extend(e||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),c.isNode&&c.isStream(t)?o.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):i.prepareContent("the loaded zip file",t,!0,e.optimizedBinaryString,e.base64).then(function(t){var n=new s(e);return n.load(t),n}).then(function(t){var n=[o.Promise.resolve(t)],i=t.files;if(e.checkCRC32)for(var a=0;a<i.length;a++)n.push(r(i[a]));return o.Promise.all(n)}).then(function(t){for(var r=t.shift(),i=r.files,o=0;o<i.length;o++){var a=i[o];n.file(a.fileNameStr,a.decompressed,{binary:!0,optimizedBinaryString:!0,date:a.date,dir:a.dir,comment:a.fileCommentStr.length?a.fileCommentStr:null,unixPermissions:a.unixPermissions,dosPermissions:a.dosPermissions,createFolders:e.createFolders})}return r.zipComment.length&&(n.comment=r.zipComment),n})}},{"./external":6,"./nodejsUtils":12,"./stream/Crc32Probe":22,"./utf8":28,"./utils":29,"./zipEntries":30}],12:[function(t,e,n){(function(t){"use strict";e.exports={isNode:"undefined"!=typeof t,newBuffer:function(e,n){return new t(e,n)},isBuffer:function(e){return t.isBuffer(e)},isStream:function(t){return t&&"function"==typeof t.on&&"function"==typeof t.pause&&"function"==typeof t.resume}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],13:[function(t,e,n){"use strict";function r(t){return"[object RegExp]"===Object.prototype.toString.call(t)}var i=t("./utf8"),o=t("./utils"),a=t("./stream/GenericWorker"),s=t("./stream/StreamHelper"),u=t("./defaults"),c=t("./compressedObject"),f=t("./zipObject"),l=t("./generate"),h=t("./nodejsUtils"),d=t("./nodejs/NodejsStreamInputAdapter"),p=function(t,e,n){var r,i=o.getTypeOf(e);n=o.extend(n||{},u),n.date=n.date||new Date,null!==n.compression&&(n.compression=n.compression.toUpperCase()),"string"==typeof n.unixPermissions&&(n.unixPermissions=parseInt(n.unixPermissions,8)),n.unixPermissions&&16384&n.unixPermissions&&(n.dir=!0),n.dosPermissions&&16&n.dosPermissions&&(n.dir=!0),n.dir&&(t=g(t)),n.createFolders&&(r=_(t))&&m.call(this,r,!0);var s="string"===i&&n.binary===!1&&n.base64===!1;n.binary=!s;var l=e instanceof c&&0===e.uncompressedSize;(l||n.dir||!e||0===e.length)&&(n.base64=!1,n.binary=!0,e="",n.compression="STORE",i="string");var p=null;p=e instanceof c||e instanceof a?e:h.isNode&&h.isStream(e)?new d(t,e):o.prepareContent(t,e,n.binary,n.optimizedBinaryString,n.base64);var v=new f(t,p,n);this.files[t]=v},_=function(t){"/"===t.slice(-1)&&(t=t.substring(0,t.length-1));var e=t.lastIndexOf("/");return e>0?t.substring(0,e):""},g=function(t){return"/"!==t.slice(-1)&&(t+="/"),t},m=function(t,e){return e="undefined"!=typeof e?e:u.createFolders,t=g(t),this.files[t]||p.call(this,t,null,{dir:!0,createFolders:e}),this.files[t]},v={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(t){var e,n,r;for(e in this.files)this.files.hasOwnProperty(e)&&(r=this.files[e],n=e.slice(this.root.length,e.length),n&&e.slice(0,this.root.length)===this.root&&t(n,r))},filter:function(t){var e=[];return this.forEach(function(n,r){t(n,r)&&e.push(r)}),e},file:function(t,e,n){if(1===arguments.length){if(r(t)){var i=t;return this.filter(function(t,e){return!e.dir&&i.test(t)})}var o=this.files[this.root+t];return o&&!o.dir?o:null}return t=this.root+t,p.call(this,t,e,n),this},folder:function(t){if(!t)return this;if(r(t))return this.filter(function(e,n){return n.dir&&t.test(e)});var e=this.root+t,n=m.call(this,e),i=this.clone();return i.root=n.name,i},remove:function(t){t=this.root+t;var e=this.files[t];if(e||("/"!==t.slice(-1)&&(t+="/"),e=this.files[t]),e&&!e.dir)delete this.files[t];else for(var n=this.filter(function(e,n){return n.name.slice(0,t.length)===t}),r=0;r<n.length;r++)delete this.files[n[r].name];return this},generate:function(t){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(t){var e,n={};try{if(n=o.extend(t||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:i.utf8encode}),n.type=n.type.toLowerCase(),n.compression=n.compression.toUpperCase(),"binarystring"===n.type&&(n.type="string"),!n.type)throw new Error("No output type specified.");o.checkSupport(n.type),"darwin"!==t.platform&&"freebsd"!==t.platform&&"linux"!==t.platform&&"sunos"!==t.platform||(t.platform="UNIX"),"win32"===t.platform&&(t.platform="DOS");var r=n.comment||this.comment||"";e=l.generateWorker(this,n,r)}catch(u){e=new a("error"),e.error(u)}return new s(e,n.type||"string",n.mimeType)},generateAsync:function(t,e){return this.generateInternalStream(t).accumulate(e)},generateNodeStream:function(t,e){return t=t||{},t.type||(t.type="nodebuffer"),this.generateInternalStream(t).toNodejsStream(e)}};e.exports=v},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":35,"./nodejsUtils":12,"./stream/GenericWorker":25,"./stream/StreamHelper":26,"./utf8":28,"./utils":29,"./zipObject":32}],14:[function(t,e,n){"use strict";function r(t){i.call(this,t);for(var e=0;e<this.data.length;e++)t[e]=255&t[e]}var i=t("./DataReader"),o=t("../utils");o.inherits(r,i),r.prototype.byteAt=function(t){return this.data[this.zero+t]},r.prototype.lastIndexOfSignature=function(t){for(var e=t.charCodeAt(0),n=t.charCodeAt(1),r=t.charCodeAt(2),i=t.charCodeAt(3),o=this.length-4;o>=0;--o)if(this.data[o]===e&&this.data[o+1]===n&&this.data[o+2]===r&&this.data[o+3]===i)return o-this.zero;return-1},r.prototype.readAndCheckSignature=function(t){var e=t.charCodeAt(0),n=t.charCodeAt(1),r=t.charCodeAt(2),i=t.charCodeAt(3),o=this.readData(4);return e===o[0]&&n===o[1]&&r===o[2]&&i===o[3]},r.prototype.readData=function(t){if(this.checkOffset(t),0===t)return[];var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=r},{"../utils":29,"./DataReader":15}],15:[function(t,e,n){"use strict";function r(t){this.data=t,this.length=t.length,this.index=0,this.zero=0}var i=t("../utils");r.prototype={checkOffset:function(t){this.checkIndex(this.index+t)},checkIndex:function(t){if(this.length<this.zero+t||t<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+t+"). Corrupted zip ?")},setIndex:function(t){this.checkIndex(t),this.index=t},skip:function(t){this.setIndex(this.index+t)},byteAt:function(t){},readInt:function(t){var e,n=0;for(this.checkOffset(t),e=this.index+t-1;e>=this.index;e--)n=(n<<8)+this.byteAt(e);return this.index+=t,n},readString:function(t){return i.transformTo("string",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC((t>>25&127)+1980,(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=r},{"../utils":29}],16:[function(t,e,n){"use strict";function r(t){i.call(this,t)}var i=t("./Uint8ArrayReader"),o=t("../utils");o.inherits(r,i),r.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=r},{"../utils":29,"./Uint8ArrayReader":18}],17:[function(t,e,n){"use strict";function r(t){i.call(this,t)}var i=t("./DataReader"),o=t("../utils");o.inherits(r,i),r.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},r.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},r.prototype.readAndCheckSignature=function(t){var e=this.readData(4);return t===e},r.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=r},{"../utils":29,"./DataReader":15}],18:[function(t,e,n){"use strict";function r(t){i.call(this,t)}var i=t("./ArrayReader"),o=t("../utils");o.inherits(r,i),r.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=r},{"../utils":29,"./ArrayReader":14}],19:[function(t,e,n){"use strict";var r=t("../utils"),i=t("../support"),o=t("./ArrayReader"),a=t("./StringReader"),s=t("./NodeBufferReader"),u=t("./Uint8ArrayReader");e.exports=function(t){var e=r.getTypeOf(t);return r.checkSupport(e),"string"!==e||i.uint8array?"nodebuffer"===e?new s(t):i.uint8array?new u(r.transformTo("uint8array",t)):new o(r.transformTo("array",t)):new a(t)}},{"../support":27,"../utils":29,"./ArrayReader":14,"./NodeBufferReader":16,"./StringReader":17,"./Uint8ArrayReader":18}],20:[function(t,e,n){"use strict";n.LOCAL_FILE_HEADER="PK",n.CENTRAL_FILE_HEADER="PK",n.CENTRAL_DIRECTORY_END="PK",n.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",n.ZIP64_CENTRAL_DIRECTORY_END="PK",n.DATA_DESCRIPTOR="PK\b"},{}],21:[function(t,e,n){"use strict";function r(t){i.call(this,"ConvertWorker to "+t),this.destType=t}var i=t("./GenericWorker"),o=t("../utils");o.inherits(r,i),r.prototype.processChunk=function(t){this.push({data:o.transformTo(this.destType,t.data),meta:t.meta})},e.exports=r},{"../utils":29,"./GenericWorker":25}],22:[function(t,e,n){"use strict";function r(){i.call(this,"Crc32Probe")}var i=t("./GenericWorker"),o=t("../crc32"),a=t("../utils");a.inherits(r,i),r.prototype.processChunk=function(t){this.streamInfo.crc32=o(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=r},{"../crc32":4,"../utils":29,"./GenericWorker":25}],23:[function(t,e,n){"use strict";function r(t){o.call(this,"DataLengthProbe for "+t),this.propName=t,this.withStreamInfo(t,0)}var i=t("../utils"),o=t("./GenericWorker");i.inherits(r,o),r.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}o.prototype.processChunk.call(this,t)},e.exports=r},{"../utils":29,"./GenericWorker":25}],24:[function(t,e,n){"use strict";function r(t){o.call(this,"DataWorker");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,t.then(function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=i.getTypeOf(t),e.isPaused||e._tickAndRepeat()},function(t){e.error(t)})}var i=t("../utils"),o=t("./GenericWorker"),a=16384;i.inherits(r,o),r.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=a,e=null,n=Math.min(this.max,this.index+t);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,n);break;case"uint8array":e=this.data.subarray(this.index,n);break;case"array":case"nodebuffer":e=this.data.slice(this.index,n)}return this.index=n,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=r},{"../utils":29,"./GenericWorker":25}],25:[function(t,e,n){
 "use strict";function r(t){this.name=t||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}r.prototype={push:function(t){this.emit("data",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit("error",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit("error",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var n=0;n<this._listeners[t].length;n++)this._listeners[t][n].call(this,e)},pipe:function(t){return t.registerPrevious(this)},registerPrevious:function(t){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=t.streamInfo,this.mergeStreamInfo(),this.previous=t;var e=this;return t.on("data",function(t){e.processChunk(t)}),t.on("end",function(){e.end()}),t.on("error",function(t){e.error(t)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;this.isPaused=!1;var t=!1;return this.generatedError&&(this.error(this.generatedError),t=!0),this.previous&&this.previous.resume(),!t},flush:function(){},processChunk:function(t){this.push(t)},withStreamInfo:function(t,e){return this.extraStreamInfo[t]=e,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var t in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(t)&&(this.streamInfo[t]=this.extraStreamInfo[t])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var t="Worker "+this.name;return this.previous?this.previous+" -> "+t:t}},e.exports=r},{}],26:[function(t,e,n){(function(n){"use strict";function r(t,e,n){switch(t){case"blob":return s.newBlob(s.transformTo("arraybuffer",e),n);case"base64":return f.encode(e);default:return s.transformTo(t,e)}}function i(t,e){var r,i=0,o=null,a=0;for(r=0;r<e.length;r++)a+=e[r].length;switch(t){case"string":return e.join("");case"array":return Array.prototype.concat.apply([],e);case"uint8array":for(o=new Uint8Array(a),r=0;r<e.length;r++)o.set(e[r],i),i+=e[r].length;return o;case"nodebuffer":return n.concat(e);default:throw new Error("concat : unsupported type '"+t+"'")}}function o(t,e){return new h.Promise(function(n,o){var a=[],s=t._internalType,u=t._outputType,c=t._mimeType;t.on("data",function(t,n){a.push(t),e&&e(n)}).on("error",function(t){a=[],o(t)}).on("end",function(){try{var t=r(u,i(s,a),c);n(t)}catch(e){o(e)}a=[]}).resume()})}function a(t,e,n){var r=e;switch(e){case"blob":case"arraybuffer":r="uint8array";break;case"base64":r="string"}try{this._internalType=r,this._outputType=e,this._mimeType=n,s.checkSupport(r),this._worker=t.pipe(new u(r)),t.lock()}catch(i){this._worker=new c("error"),this._worker.error(i)}}var s=t("../utils"),u=t("./ConvertWorker"),c=t("./GenericWorker"),f=t("../base64"),l=t("../nodejs/NodejsStreamOutputAdapter"),h=t("../external");a.prototype={accumulate:function(t){return o(this,t)},on:function(t,e){var n=this;return"data"===t?this._worker.on(t,function(t){e.call(n,t.data,t.meta)}):this._worker.on(t,function(){s.delay(e,arguments,n)}),this},resume:function(){return s.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(t){if(s.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new l(this,{objectMode:"nodebuffer"!==this._outputType},t)}},e.exports=a}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":35,"../utils":29,"./ConvertWorker":21,"./GenericWorker":25}],27:[function(t,e,n){(function(e){"use strict";if(n.base64=!0,n.array=!0,n.string=!0,n.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,n.nodebuffer="undefined"!=typeof e,n.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)n.blob=!1;else{var r=new ArrayBuffer(0);try{n.blob=0===new Blob([r],{type:"application/zip"}).size}catch(i){try{var o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,a=new o;a.append(r),n.blob=0===a.getBlob("application/zip").size}catch(i){n.blob=!1}}}n.nodestream=!!t("./nodejs/NodejsStreamOutputAdapter").prototype}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{"./nodejs/NodejsStreamOutputAdapter":35}],28:[function(t,e,n){"use strict";function r(){u.call(this,"utf-8 decode"),this.leftOver=null}function i(){u.call(this,"utf-8 encode")}for(var o=t("./utils"),a=t("./support"),s=t("./nodejsUtils"),u=t("./stream/GenericWorker"),c=new Array(256),f=0;f<256;f++)c[f]=f>=252?6:f>=248?5:f>=240?4:f>=224?3:f>=192?2:1;c[254]=c[254]=1;var l=function(t){var e,n,r,i,o,s=t.length,u=0;for(i=0;i<s;i++)n=t.charCodeAt(i),55296===(64512&n)&&i+1<s&&(r=t.charCodeAt(i+1),56320===(64512&r)&&(n=65536+(n-55296<<10)+(r-56320),i++)),u+=n<128?1:n<2048?2:n<65536?3:4;for(e=a.uint8array?new Uint8Array(u):new Array(u),o=0,i=0;o<u;i++)n=t.charCodeAt(i),55296===(64512&n)&&i+1<s&&(r=t.charCodeAt(i+1),56320===(64512&r)&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?e[o++]=n:n<2048?(e[o++]=192|n>>>6,e[o++]=128|63&n):n<65536?(e[o++]=224|n>>>12,e[o++]=128|n>>>6&63,e[o++]=128|63&n):(e[o++]=240|n>>>18,e[o++]=128|n>>>12&63,e[o++]=128|n>>>6&63,e[o++]=128|63&n);return e},h=function(t,e){var n;for(e=e||t.length,e>t.length&&(e=t.length),n=e-1;n>=0&&128===(192&t[n]);)n--;return n<0?e:0===n?e:n+c[t[n]]>e?n:e},d=function(t){var e,n,r,i,a=t.length,s=new Array(2*a);for(n=0,e=0;e<a;)if(r=t[e++],r<128)s[n++]=r;else if(i=c[r],i>4)s[n++]=65533,e+=i-1;else{for(r&=2===i?31:3===i?15:7;i>1&&e<a;)r=r<<6|63&t[e++],i--;i>1?s[n++]=65533:r<65536?s[n++]=r:(r-=65536,s[n++]=55296|r>>10&1023,s[n++]=56320|1023&r)}return s.length!==n&&(s.subarray?s=s.subarray(0,n):s.length=n),o.applyFromCharCode(s)};n.utf8encode=function(t){return a.nodebuffer?s.newBuffer(t,"utf-8"):l(t)},n.utf8decode=function(t){return a.nodebuffer?o.transformTo("nodebuffer",t).toString("utf-8"):(t=o.transformTo(a.uint8array?"uint8array":"array",t),d(t))},o.inherits(r,u),r.prototype.processChunk=function(t){var e=o.transformTo(a.uint8array?"uint8array":"array",t.data);if(this.leftOver&&this.leftOver.length){if(a.uint8array){var r=e;e=new Uint8Array(r.length+this.leftOver.length),e.set(this.leftOver,0),e.set(r,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var i=h(e),s=e;i!==e.length&&(a.uint8array?(s=e.subarray(0,i),this.leftOver=e.subarray(i,e.length)):(s=e.slice(0,i),this.leftOver=e.slice(i,e.length))),this.push({data:n.utf8decode(s),meta:t.meta})},r.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:n.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},n.Utf8DecodeWorker=r,o.inherits(i,u),i.prototype.processChunk=function(t){this.push({data:n.utf8encode(t.data),meta:t.meta})},n.Utf8EncodeWorker=i},{"./nodejsUtils":12,"./stream/GenericWorker":25,"./support":27,"./utils":29}],29:[function(t,e,n){"use strict";function r(t){var e=null;return e=u.uint8array?new Uint8Array(t.length):new Array(t.length),o(t,e)}function i(t){return t}function o(t,e){for(var n=0;n<t.length;++n)e[n]=255&t.charCodeAt(n);return e}function a(t){var e=65536,r=n.getTypeOf(t),i=!0;if("uint8array"===r?i=d.applyCanBeUsed.uint8array:"nodebuffer"===r&&(i=d.applyCanBeUsed.nodebuffer),i)for(;e>1;)try{return d.stringifyByChunk(t,r,e)}catch(o){e=Math.floor(e/2)}return d.stringifyByChar(t)}function s(t,e){for(var n=0;n<t.length;n++)e[n]=t[n];return e}var u=t("./support"),c=t("./base64"),f=t("./nodejsUtils"),l=t("asap"),h=t("./external");n.newBlob=function(t,e){n.checkSupport("blob");try{return new Blob([t],{type:e})}catch(r){try{var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,o=new i;return o.append(t),o.getBlob(e)}catch(r){throw new Error("Bug : can't construct the Blob.")}}};var d={stringifyByChunk:function(t,e,n){var r=[],i=0,o=t.length;if(o<=n)return String.fromCharCode.apply(null,t);for(;i<o;)"array"===e||"nodebuffer"===e?r.push(String.fromCharCode.apply(null,t.slice(i,Math.min(i+n,o)))):r.push(String.fromCharCode.apply(null,t.subarray(i,Math.min(i+n,o)))),i+=n;return r.join("")},stringifyByChar:function(t){for(var e="",n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return e},applyCanBeUsed:{uint8array:function(){try{return u.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(t){return!1}}(),nodebuffer:function(){try{return u.nodebuffer&&1===String.fromCharCode.apply(null,f.newBuffer(1)).length}catch(t){return!1}}()}};n.applyFromCharCode=a;var p={};p.string={string:i,array:function(t){return o(t,new Array(t.length))},arraybuffer:function(t){return p.string.uint8array(t).buffer},uint8array:function(t){return o(t,new Uint8Array(t.length))},nodebuffer:function(t){return o(t,f.newBuffer(t.length))}},p.array={string:a,array:i,arraybuffer:function(t){return new Uint8Array(t).buffer},uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return f.newBuffer(t)}},p.arraybuffer={string:function(t){return a(new Uint8Array(t))},array:function(t){return s(new Uint8Array(t),new Array(t.byteLength))},arraybuffer:i,uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return f.newBuffer(new Uint8Array(t))}},p.uint8array={string:a,array:function(t){return s(t,new Array(t.length))},arraybuffer:function(t){return t.buffer},uint8array:i,nodebuffer:function(t){return f.newBuffer(t)}},p.nodebuffer={string:a,array:function(t){return s(t,new Array(t.length))},arraybuffer:function(t){return p.nodebuffer.uint8array(t).buffer},uint8array:function(t){return s(t,new Uint8Array(t.length))},nodebuffer:i},n.transformTo=function(t,e){if(e||(e=""),!t)return e;n.checkSupport(t);var r=n.getTypeOf(e),i=p[r][t](e);return i},n.getTypeOf=function(t){return"string"==typeof t?"string":"[object Array]"===Object.prototype.toString.call(t)?"array":u.nodebuffer&&f.isBuffer(t)?"nodebuffer":u.uint8array&&t instanceof Uint8Array?"uint8array":u.arraybuffer&&t instanceof ArrayBuffer?"arraybuffer":void 0},n.checkSupport=function(t){var e=u[t.toLowerCase()];if(!e)throw new Error(t+" is not supported by this platform")},n.MAX_VALUE_16BITS=65535,n.MAX_VALUE_32BITS=-1,n.pretty=function(t){var e,n,r="";for(n=0;n<(t||"").length;n++)e=t.charCodeAt(n),r+="\\x"+(e<16?"0":"")+e.toString(16).toUpperCase();return r},n.delay=function(t,e,n){l(function(){t.apply(n||null,e||[])})},n.inherits=function(t,e){var n=function(){};n.prototype=e.prototype,t.prototype=new n},n.extend=function(){var t,e,n={};for(t=0;t<arguments.length;t++)for(e in arguments[t])arguments[t].hasOwnProperty(e)&&"undefined"==typeof n[e]&&(n[e]=arguments[t][e]);return n},n.prepareContent=function(t,e,i,o,a){var s=null;return s=u.blob&&e instanceof Blob&&"undefined"!=typeof FileReader?new h.Promise(function(t,n){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=function(t){n(t.target.error)},r.readAsArrayBuffer(e)}):h.Promise.resolve(e),s.then(function(e){var s=n.getTypeOf(e);return s?("arraybuffer"===s?e=n.transformTo("uint8array",e):"string"===s&&(a?e=c.decode(e):i&&o!==!0&&(e=r(e))),e):h.Promise.reject(new Error("The data of '"+t+"' is in an unsupported format !"))})}},{"./base64":1,"./external":6,"./nodejsUtils":12,"./support":27,asap:33}],30:[function(t,e,n){"use strict";function r(t){this.files=[],this.loadOptions=t}var i=t("./reader/readerFor"),o=t("./utils"),a=t("./signature"),s=t("./zipEntry"),u=(t("./utf8"),t("./support"));r.prototype={checkSignature:function(t){if(!this.reader.readAndCheckSignature(t)){this.reader.index-=4;var e=this.reader.readString(4);throw new Error("Corrupted zip or bug : unexpected signature ("+o.pretty(e)+", expected "+o.pretty(t)+")")}},isSignature:function(t,e){var n=this.reader.index;this.reader.setIndex(t);var r=this.reader.readString(4),i=r===e;return this.reader.setIndex(n),i},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var t=this.reader.readData(this.zipCommentLength),e=u.uint8array?"uint8array":"array",n=o.transformTo(e,t);this.zipComment=this.loadOptions.decodeFileName(n)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var t,e,n,r=this.zip64EndOfCentralSize-44,i=0;i<r;)t=this.reader.readInt(2),e=this.reader.readInt(4),n=this.reader.readData(e),this.zip64ExtensibleData[t]={id:t,length:e,value:n}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var t,e;for(t=0;t<this.files.length;t++)e=this.files[t],this.reader.setIndex(e.localHeaderOffset),this.checkSignature(a.LOCAL_FILE_HEADER),e.readLocalPart(this.reader),e.handleUTF8(),e.processAttributes()},readCentralDir:function(){var t;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(a.CENTRAL_FILE_HEADER);)t=new s({zip64:this.zip64},this.loadOptions),t.readCentralPart(this.reader),this.files.push(t);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var t=this.reader.lastIndexOfSignature(a.CENTRAL_DIRECTORY_END);if(t<0){var e=!this.isSignature(0,a.LOCAL_FILE_HEADER);throw e?new Error("Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html"):new Error("Corrupted zip : can't find end of central directory")}this.reader.setIndex(t);var n=t;if(this.checkSignature(a.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===o.MAX_VALUE_16BITS||this.diskWithCentralDirStart===o.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===o.MAX_VALUE_16BITS||this.centralDirRecords===o.MAX_VALUE_16BITS||this.centralDirSize===o.MAX_VALUE_32BITS||this.centralDirOffset===o.MAX_VALUE_32BITS){if(this.zip64=!0,t=this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR),t<0)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(t),this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,a.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip : can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var i=n-r;if(i>0)this.isSignature(n,a.CENTRAL_FILE_HEADER)||(this.reader.zero=i);else if(i<0)throw new Error("Corrupted zip: missing "+Math.abs(i)+" bytes.")},prepareReader:function(t){this.reader=i(t)},load:function(t){this.prepareReader(t),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=r},{"./reader/readerFor":19,"./signature":20,"./support":27,"./utf8":28,"./utils":29,"./zipEntry":31}],31:[function(t,e,n){"use strict";function r(t,e){this.options=t,this.loadOptions=e}var i=t("./reader/readerFor"),o=t("./utils"),a=t("./compressedObject"),s=t("./crc32"),u=t("./utf8"),c=t("./compressions"),f=t("./support"),l=0,h=3,d=function(t){for(var e in c)if(c.hasOwnProperty(e)&&c[e].magic===t)return c[e];return null};r.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},readLocalPart:function(t){var e,n;if(t.skip(22),this.fileNameLength=t.readInt(2),n=t.readInt(2),this.fileName=t.readData(this.fileNameLength),t.skip(n),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(e=d(this.compressionMethod),null===e)throw new Error("Corrupted zip : compression "+o.pretty(this.compressionMethod)+" unknown (inner file : "+o.transformTo("string",this.fileName)+")");this.decompressed=new a(this.compressedSize,this.uncompressedSize,this.crc32,e,t.readData(this.compressedSize))},readCentralPart:function(t){this.versionMadeBy=t.readInt(2),t.skip(2),this.bitFlag=t.readInt(2),this.compressionMethod=t.readString(2),this.date=t.readDate(),this.crc32=t.readInt(4),this.compressedSize=t.readInt(4),this.uncompressedSize=t.readInt(4);var e=t.readInt(2);if(this.extraFieldsLength=t.readInt(2),this.fileCommentLength=t.readInt(2),this.diskNumberStart=t.readInt(2),this.internalFileAttributes=t.readInt(2),this.externalFileAttributes=t.readInt(4),this.localHeaderOffset=t.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");t.skip(e),this.readExtraFields(t),this.parseZIP64ExtraField(t),this.fileComment=t.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var t=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),t===l&&(this.dosPermissions=63&this.externalFileAttributes),t===h&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(t){var e,n,r,i=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index<i;)e=t.readInt(2),n=t.readInt(2),r=t.readData(n),this.extraFields[e]={id:e,length:n,value:r}},handleUTF8:function(){var t=f.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=u.utf8decode(this.fileName),this.fileCommentStr=u.utf8decode(this.fileComment);else{var e=this.findExtraFieldUnicodePath();if(null!==e)this.fileNameStr=e;else{var n=o.transformTo(t,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(n)}var r=this.findExtraFieldUnicodeComment();if(null!==r)this.fileCommentStr=r;else{var i=o.transformTo(t,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var t=this.extraFields[28789];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:s(this.fileName)!==e.readInt(4)?null:u.utf8decode(e.readData(t.length-5))}return null},findExtraFieldUnicodeComment:function(){var t=this.extraFields[25461];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:s(this.fileComment)!==e.readInt(4)?null:u.utf8decode(e.readData(t.length-5))}return null}},e.exports=r},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":19,"./support":27,"./utf8":28,"./utils":29}],32:[function(t,e,n){"use strict";var r=t("./stream/StreamHelper"),i=t("./stream/DataWorker"),o=t("./utf8"),a=t("./compressedObject"),s=t("./stream/GenericWorker"),u=function(t,e,n){this.name=t,this.dir=n.dir,this.date=n.date,this.comment=n.comment,this.unixPermissions=n.unixPermissions,this.dosPermissions=n.dosPermissions,this._data=e,this._dataBinary=n.binary,this.options={compression:n.compression,compressionOptions:n.compressionOptions}};u.prototype={internalStream:function(t){var e=t.toLowerCase(),n="string"===e||"text"===e;"binarystring"!==e&&"text"!==e||(e="string");var i=this._decompressWorker(),a=!this._dataBinary;return a&&!n&&(i=i.pipe(new o.Utf8EncodeWorker)),!a&&n&&(i=i.pipe(new o.Utf8DecodeWorker)),new r(i,e,"")},async:function(t,e){return this.internalStream(t).accumulate(e)},nodeStream:function(t,e){return this.internalStream(t||"nodebuffer").toNodejsStream(e)},_compressWorker:function(t,e){if(this._data instanceof a&&this._data.compression.magic===t.magic)return this._data.getCompressedWorker();var n=this._decompressWorker();return this._dataBinary||(n=n.pipe(new o.Utf8EncodeWorker)),a.createWorkerFrom(n,t,e)},_decompressWorker:function(){return this._data instanceof a?this._data.getContentWorker():this._data instanceof s?this._data:new i(this._data)}};for(var c=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],f=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},l=0;l<c.length;l++)u.prototype[c[l]]=f;e.exports=u},{"./compressedObject":2,"./stream/DataWorker":24,"./stream/GenericWorker":25,"./stream/StreamHelper":26,"./utf8":28}],33:[function(t,e,n){"use strict";function r(){if(u.length)throw u.shift()}function i(t){var e;e=s.length?s.pop():new o,e.task=t,a(e)}function o(){this.task=null}var a=t("./raw"),s=[],u=[],c=a.makeRequestCallFromTimer(r);e.exports=i,o.prototype.call=function(){try{this.task.call()}catch(t){i.onerror?i.onerror(t):(u.push(t),c())}finally{this.task=null,s[s.length]=this}}},{"./raw":34}],34:[function(t,e,n){(function(t){"use strict";function n(t){s.length||(a(),u=!0),s[s.length]=t}function r(){for(;c<s.length;){var t=c;if(c+=1,s[t].call(),c>f){for(var e=0,n=s.length-c;e<n;e++)s[e]=s[e+c];s.length-=c,c=0}}s.length=0,c=0,u=!1}function i(t){var e=1,n=new l(t),r=document.createTextNode("");return n.observe(r,{characterData:!0}),function(){e=-e,r.data=e}}function o(t){return function(){function e(){clearTimeout(n),clearInterval(r),t()}var n=setTimeout(e,0),r=setInterval(e,50)}}e.exports=n;var a,s=[],u=!1,c=0,f=1024,l=t.MutationObserver||t.WebKitMutationObserver;a="function"==typeof l?i(r):o(r),n.requestFlush=a,n.makeRequestCallFromTimer=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],35:[function(t,e,n){},{}],36:[function(t,e,n){function r(){f=!1,s.length?c=s.concat(c):l=-1,c.length&&i()}function i(){if(!f){var t=setTimeout(r);f=!0;for(var e=c.length;e;){for(s=c,c=[];++l<e;)s&&s[l].run();l=-1,e=c.length}s=null,f=!1,clearTimeout(t)}}function o(t,e){this.fun=t,this.array=e}function a(){}var s,u=e.exports={},c=[],f=!1,l=-1;u.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new o(t,e)),1!==c.length||f||setTimeout(i,0)},o.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=a,u.addListener=a,u.once=a,u.off=a,u.removeListener=a,u.removeAllListeners=a,u.emit=a,u.binding=function(t){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(t){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},{}],37:[function(e,n,r){(function(r,i){(function(){"use strict";function o(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return"function"==typeof t}function s(t){return"object"==typeof t&&null!==t}function u(t){H=t}function c(t){V=t}function f(){return function(){r.nextTick(_)}}function l(){return function(){Y(_)}}function h(){var t=0,e=new Q(_),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function d(){var t=new MessageChannel;return t.port1.onmessage=_,function(){t.port2.postMessage(0)}}function p(){return function(){setTimeout(_,1)}}function _(){for(var t=0;t<$;t+=2){var e=nt[t],n=nt[t+1];e(n),nt[t]=void 0,nt[t+1]=void 0}$=0}function g(){try{var t=e,n=t("vertx");return Y=n.runOnLoop||n.runOnContext,l()}catch(r){return p()}}function m(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function y(){return new TypeError("A promises callback cannot return that same promise.")}function w(t){try{return t.then}catch(e){return at.error=e,at}}function b(t,e,n,r){try{t.call(e,n,r)}catch(i){return i}}function k(t,e,n){V(function(t){var r=!1,i=b(n,e,function(n){r||(r=!0,e!==n?C(t,n):E(t,n))},function(e){r||(r=!0,I(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&i&&(r=!0,I(t,i))},t)}function x(t,e){e._state===it?E(t,e._result):e._state===ot?I(t,e._result):O(e,void 0,function(e){C(t,e)},function(e){I(t,e)})}function A(t,e){if(e.constructor===t.constructor)x(t,e);else{var n=w(e);n===at?I(t,at.error):void 0===n?E(t,e):a(n)?k(t,e,n):E(t,e)}}function C(t,e){t===e?I(t,v()):o(e)?A(t,e):E(t,e)}function S(t){t._onerror&&t._onerror(t._result),z(t)}function E(t,e){t._state===rt&&(t._result=e,t._state=it,0!==t._subscribers.length&&V(z,t))}function I(t,e){t._state===rt&&(t._state=ot,t._result=e,V(S,t))}function O(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+it]=n,i[o+ot]=r,0===o&&t._state&&V(z,t)}function z(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r,i,o=t._result,a=0;a<e.length;a+=3)r=e[a],i=e[a+n],r?N(n,r,i,o):i(o);t._subscribers.length=0}}function j(){this.error=null}function T(t,e){try{return t(e)}catch(n){return st.error=n,st}}function N(t,e,n,r){var i,o,s,u,c=a(n);if(c){if(i=T(n,r),i===st?(u=!0,o=i.error,i=null):s=!0,e===i)return void I(e,y())}else i=r,s=!0;e._state!==rt||(c&&s?C(e,i):u?I(e,o):t===it?E(e,i):t===ot&&I(e,i))}function F(t,e){try{e(function(e){C(t,e)},function(e){I(t,e)})}catch(n){I(t,n)}}function R(t,e){var n=this;n._instanceConstructor=t,n.promise=new t(m),n._validateInput(e)?(n._input=e,n.length=e.length,n._remaining=e.length,n._init(),0===n.length?E(n.promise,n._result):(n.length=n.length||0,n._enumerate(),0===n._remaining&&E(n.promise,n._result))):I(n.promise,n._validationError())}function D(t){return new ut(this,t).promise}function B(t){function e(t){C(i,t)}function n(t){I(i,t)}var r=this,i=new r(m);if(!K(t))return I(i,new TypeError("You must pass an array to race.")),i;for(var o=t.length,a=0;i._state===rt&&a<o;a++)O(r.resolve(t[a]),void 0,e,n);return i}function L(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(m);return C(n,t),n}function U(t){var e=this,n=new e(m);return I(n,t),n}function P(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function M(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function W(t){this._id=dt++,this._state=void 0,this._result=void 0,this._subscribers=[],m!==t&&(a(t)||P(),this instanceof W||M(),F(this,t))}function Z(){var t;if("undefined"!=typeof i)t=i;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;n&&"[object Promise]"===Object.prototype.toString.call(n.resolve())&&!n.cast||(t.Promise=pt)}var q;q=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var Y,H,G,K=q,$=0,V=({}.toString,function(t,e){nt[$]=t,nt[$+1]=e,$+=2,2===$&&(H?H(_):G())}),X="undefined"!=typeof window?window:void 0,J=X||{},Q=J.MutationObserver||J.WebKitMutationObserver,tt="undefined"!=typeof r&&"[object process]"==={}.toString.call(r),et="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,nt=new Array(1e3);G=tt?f():Q?h():et?d():void 0===X&&"function"==typeof e?g():p();var rt=void 0,it=1,ot=2,at=new j,st=new j;R.prototype._validateInput=function(t){return K(t)},R.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")},R.prototype._init=function(){this._result=new Array(this.length)};var ut=R;R.prototype._enumerate=function(){for(var t=this,e=t.length,n=t.promise,r=t._input,i=0;n._state===rt&&i<e;i++)t._eachEntry(r[i],i)},R.prototype._eachEntry=function(t,e){var n=this,r=n._instanceConstructor;s(t)?t.constructor===r&&t._state!==rt?(t._onerror=null,n._settledAt(t._state,e,t._result)):n._willSettleAt(r.resolve(t),e):(n._remaining--,n._result[e]=t)},R.prototype._settledAt=function(t,e,n){var r=this,i=r.promise;i._state===rt&&(r._remaining--,t===ot?I(i,n):r._result[e]=n),0===r._remaining&&E(i,r._result)},R.prototype._willSettleAt=function(t,e){var n=this;O(t,void 0,function(t){n._settledAt(it,e,t)},function(t){n._settledAt(ot,e,t)})};var ct=D,ft=B,lt=L,ht=U,dt=0,pt=W;W.all=ct,W.race=ft,W.resolve=lt,W.reject=ht,W._setScheduler=u,W._setAsap=c,W._asap=V,W.prototype={constructor:W,then:function(t,e){var n=this,r=n._state;if(r===it&&!t||r===ot&&!e)return this;var i=new this.constructor(m),o=n._result;if(r){var a=arguments[r-1];V(function(){N(r,i,a,o)})}else O(n,i,t,e);return i},"catch":function(t){return this.then(null,t)}};var _t=Z,gt={Promise:pt,polyfill:_t};"function"==typeof t&&t.amd?t(function(){return gt}):"undefined"!=typeof n&&n.exports?n.exports=gt:"undefined"!=typeof this&&(this.ES6Promise=gt),_t()}).call(this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:36}],38:[function(t,e,n){"use strict";var r=t("./lib/utils/common").assign,i=t("./lib/deflate"),o=t("./lib/inflate"),a=t("./lib/zlib/constants"),s={};r(s,i,o,a),e.exports=s},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);this.options=u.assign({level:v,method:w,chunkSize:16384,windowBits:15,memLevel:8,strategy:y,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var n=s.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(n!==_)throw new Error(f[n]);if(e.header&&s.deflateSetHeader(this.strm,e.header),e.dictionary){var i;if(i="string"==typeof e.dictionary?c.string2buf(e.dictionary):"[object ArrayBuffer]"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,n=s.deflateSetDictionary(this.strm,i),n!==_)throw new Error(f[n]);this._dict_set=!0}}function i(t,e){var n=new r(e);if(n.push(t,!0),n.err)throw n.msg;return n.result}function o(t,e){return e=e||{},e.raw=!0,i(t,e)}function a(t,e){return e=e||{},e.gzip=!0,i(t,e)}var s=t("./zlib/deflate"),u=t("./utils/common"),c=t("./utils/strings"),f=t("./zlib/messages"),l=t("./zlib/zstream"),h=Object.prototype.toString,d=0,p=4,_=0,g=1,m=2,v=-1,y=0,w=8;r.prototype.push=function(t,e){var n,r,i=this.strm,o=this.options.chunkSize;if(this.ended)return!1;r=e===~~e?e:e===!0?p:d,"string"==typeof t?i.input=c.string2buf(t):"[object ArrayBuffer]"===h.call(t)?i.input=new Uint8Array(t):i.input=t,
diff --git a/xos/core/xoslib/static/vendor/xosUITutorialVendor.js b/xos/core/xoslib/static/vendor/xosUITutorialVendor.js
index 2c7a2be..ff17c68 100644
--- a/xos/core/xoslib/static/vendor/xosUITutorialVendor.js
+++ b/xos/core/xoslib/static/vendor/xosUITutorialVendor.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 !function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function n(t){var e="length"in t&&t.length,n=Q.type(t);return"function"!==n&&!Q.isWindow(t)&&(!(1!==t.nodeType||!e)||("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t))}function r(t,e,n){if(Q.isFunction(e))return Q.grep(t,function(t,r){return!!e.call(t,r,t)!==n});if(e.nodeType)return Q.grep(t,function(t){return t===e!==n});if("string"==typeof e){if(at.test(e))return Q.filter(e,t,n);e=Q.filter(e,t)}return Q.grep(t,function(t){return U.call(e,t)>=0!==n})}function i(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}function o(t){var e=dt[t]={};return Q.each(t.match(ht)||[],function(t,n){e[n]=!0}),e}function u(){G.removeEventListener("DOMContentLoaded",u,!1),t.removeEventListener("load",u,!1),Q.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Q.expando+a.uid++}function c(t,e,n){var r;if(void 0===n&&1===t.nodeType)if(r="data-"+e.replace(xt,"-$1").toLowerCase(),n=t.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:bt.test(n)?Q.parseJSON(n):n)}catch(i){}yt.set(t,e,n)}else n=void 0;return n}function s(){return!0}function l(){return!1}function f(){try{return G.activeElement}catch(t){}}function p(t,e){return Q.nodeName(t,"table")&&Q.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function h(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function d(t){var e=Ht.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function g(t,e){for(var n=0,r=t.length;n<r;n++)mt.set(t[n],"globalEval",!e||mt.get(e[n],"globalEval"))}function v(t,e){var n,r,i,o,u,a,c,s;if(1===e.nodeType){if(mt.hasData(t)&&(o=mt.access(t),u=mt.set(e,o),s=o.events)){delete u.handle,u.events={};for(i in s)for(n=0,r=s[i].length;n<r;n++)Q.event.add(e,i,s[i][n])}yt.hasData(t)&&(a=yt.access(t),c=Q.extend({},a),yt.set(e,c))}}function m(t,e){var n=t.getElementsByTagName?t.getElementsByTagName(e||"*"):t.querySelectorAll?t.querySelectorAll(e||"*"):[];return void 0===e||e&&Q.nodeName(t,e)?Q.merge([t],n):n}function y(t,e){var n=e.nodeName.toLowerCase();"input"===n&&kt.test(t.type)?e.checked=t.checked:"input"!==n&&"textarea"!==n||(e.defaultValue=t.defaultValue)}function b(e,n){var r,i=Q(n.createElement(e)).appendTo(n.body),o=t.getDefaultComputedStyle&&(r=t.getDefaultComputedStyle(i[0]))?r.display:Q.css(i[0],"display");return i.detach(),o}function x(t){var e=G,n=Ft[t];return n||(n=b(t,e),"none"!==n&&n||(Wt=(Wt||Q("<iframe frameborder='0' width='0' height='0'/>")).appendTo(e.documentElement),e=Wt[0].contentDocument,e.write(),e.close(),n=b(t,e),Wt.detach()),Ft[t]=n),n}function _(t,e,n){var r,i,o,u,a=t.style;return n=n||Bt(t),n&&(u=n.getPropertyValue(e)||n[e]),n&&(""!==u||Q.contains(t.ownerDocument,t)||(u=Q.style(t,e)),$t.test(u)&&Mt.test(e)&&(r=a.width,i=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=u,u=n.width,a.width=r,a.minWidth=i,a.maxWidth=o)),void 0!==u?u+"":u}function w(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function C(t,e){if(e in t)return e;for(var n=e[0].toUpperCase()+e.slice(1),r=e,i=Vt.length;i--;)if(e=Vt[i]+n,e in t)return e;return r}function k(t,e,n){var r=Jt.exec(e);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):e}function T(t,e,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===e?1:0,u=0;o<4;o+=2)"margin"===n&&(u+=Q.css(t,n+wt[o],!0,i)),r?("content"===n&&(u-=Q.css(t,"padding"+wt[o],!0,i)),"margin"!==n&&(u-=Q.css(t,"border"+wt[o]+"Width",!0,i))):(u+=Q.css(t,"padding"+wt[o],!0,i),"padding"!==n&&(u+=Q.css(t,"border"+wt[o]+"Width",!0,i)));return u}function j(t,e,n){var r=!0,i="width"===e?t.offsetWidth:t.offsetHeight,o=Bt(t),u="border-box"===Q.css(t,"boxSizing",!1,o);if(i<=0||null==i){if(i=_(t,e,o),(i<0||null==i)&&(i=t.style[e]),$t.test(i))return i;r=u&&(Y.boxSizingReliable()||i===t.style[e]),i=parseFloat(i)||0}return i+T(t,e,n||(u?"border":"content"),r,o)+"px"}function A(t,e){for(var n,r,i,o=[],u=0,a=t.length;u<a;u++)r=t[u],r.style&&(o[u]=mt.get(r,"olddisplay"),n=r.style.display,e?(o[u]||"none"!==n||(r.style.display=""),""===r.style.display&&Ct(r)&&(o[u]=mt.access(r,"olddisplay",x(r.nodeName)))):(i=Ct(r),"none"===n&&i||mt.set(r,"olddisplay",i?n:Q.css(r,"display"))));for(u=0;u<a;u++)r=t[u],r.style&&(e&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=e?o[u]||"":"none"));return t}function E(t,e,n,r,i){return new E.prototype.init(t,e,n,r,i)}function S(){return setTimeout(function(){Yt=void 0}),Yt=Q.now()}function N(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)n=wt[r],i["margin"+n]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function D(t,e,n){for(var r,i=(ne[e]||[]).concat(ne["*"]),o=0,u=i.length;o<u;o++)if(r=i[o].call(n,e,t))return r}function O(t,e,n){var r,i,o,u,a,c,s,l,f=this,p={},h=t.style,d=t.nodeType&&Ct(t),g=mt.get(t,"fxshow");n.queue||(a=Q._queueHooks(t,"fx"),null==a.unqueued&&(a.unqueued=0,c=a.empty.fire,a.empty.fire=function(){a.unqueued||c()}),a.unqueued++,f.always(function(){f.always(function(){a.unqueued--,Q.queue(t,"fx").length||a.empty.fire()})})),1===t.nodeType&&("height"in e||"width"in e)&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],s=Q.css(t,"display"),l="none"===s?mt.get(t,"olddisplay")||x(t.nodeName):s,"inline"===l&&"none"===Q.css(t,"float")&&(h.display="inline-block")),n.overflow&&(h.overflow="hidden",f.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(r in e)if(i=e[r],Zt.exec(i)){if(delete e[r],o=o||"toggle"===i,i===(d?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;d=!0}p[r]=g&&g[r]||Q.style(t,r)}else s=void 0;if(Q.isEmptyObject(p))"inline"===("none"===s?x(t.nodeName):s)&&(h.display=s);else{g?"hidden"in g&&(d=g.hidden):g=mt.access(t,"fxshow",{}),o&&(g.hidden=!d),d?Q(t).show():f.done(function(){Q(t).hide()}),f.done(function(){var e;mt.remove(t,"fxshow");for(e in p)Q.style(t,e,p[e])});for(r in p)u=D(d?g[r]:0,r,f),r in g||(g[r]=u.start,d&&(u.end=u.start,u.start="width"===r||"height"===r?1:0))}}function L(t,e){var n,r,i,o,u;for(n in t)if(r=Q.camelCase(n),i=e[r],o=t[n],Q.isArray(o)&&(i=o[1],o=t[n]=o[0]),n!==r&&(t[r]=o,delete t[n]),u=Q.cssHooks[r],u&&"expand"in u){o=u.expand(o),delete t[r];for(n in o)n in t||(t[n]=o[n],e[n]=i)}else e[r]=i}function R(t,e,n){var r,i,o=0,u=ee.length,a=Q.Deferred().always(function(){delete c.elem}),c=function(){if(i)return!1;for(var e=Yt||S(),n=Math.max(0,s.startTime+s.duration-e),r=n/s.duration||0,o=1-r,u=0,c=s.tweens.length;u<c;u++)s.tweens[u].run(o);return a.notifyWith(t,[s,o,n]),o<1&&c?n:(a.resolveWith(t,[s]),!1)},s=a.promise({elem:t,props:Q.extend({},e),opts:Q.extend(!0,{specialEasing:{}},n),originalProperties:e,originalOptions:n,startTime:Yt||S(),duration:n.duration,tweens:[],createTween:function(e,n){var r=Q.Tween(t,s.opts,e,n,s.opts.specialEasing[e]||s.opts.easing);return s.tweens.push(r),r},stop:function(e){var n=0,r=e?s.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)s.tweens[n].run(1);return e?a.resolveWith(t,[s,e]):a.rejectWith(t,[s,e]),this}}),l=s.props;for(L(l,s.opts.specialEasing);o<u;o++)if(r=ee[o].call(s,t,l,s.opts))return r;return Q.map(l,D,s),Q.isFunction(s.opts.start)&&s.opts.start.call(t,s),Q.fx.timer(Q.extend(c,{elem:t,anim:s,queue:s.opts.queue})),s.progress(s.opts.progress).done(s.opts.done,s.opts.complete).fail(s.opts.fail).always(s.opts.always)}function q(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(ht)||[];if(Q.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function H(t,e,n,r){function i(a){var c;return o[a]=!0,Q.each(t[a]||[],function(t,a){var s=a(e,n,r);return"string"!=typeof s||u||o[s]?u?!(c=s):void 0:(e.dataTypes.unshift(s),i(s),!1)}),c}var o={},u=t===be;return i(e.dataTypes[0])||!o["*"]&&i("*")}function P(t,e){var n,r,i=Q.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&Q.extend(!0,t,r),t}function I(t,e,n){for(var r,i,o,u,a=t.contents,c=t.dataTypes;"*"===c[0];)c.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){c.unshift(i);break}if(c[0]in n)o=c[0];else{for(i in n){if(!c[0]||t.converters[i+" "+c[0]]){o=i;break}u||(u=i)}o=o||u}if(o)return o!==c[0]&&c.unshift(o),n[o]}function W(t,e,n,r){var i,o,u,a,c,s={},l=t.dataTypes.slice();if(l[1])for(u in t.converters)s[u.toLowerCase()]=t.converters[u];for(o=l.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!c&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),c=o,o=l.shift())if("*"===o)o=c;else if("*"!==c&&c!==o){if(u=s[c+" "+o]||s["* "+o],!u)for(i in s)if(a=i.split(" "),a[1]===o&&(u=s[c+" "+a[0]]||s["* "+a[0]])){u===!0?u=s[i]:s[i]!==!0&&(o=a[0],l.unshift(a[1]));break}if(u!==!0)if(u&&t["throws"])e=u(e);else try{e=u(e)}catch(f){return{state:"parsererror",error:u?f:"No conversion from "+c+" to "+o}}}return{state:"success",data:e}}function F(t,e,n,r){var i;if(Q.isArray(e))Q.each(e,function(e,i){n||ke.test(t)?r(t,i):F(t+"["+("object"==typeof i?e:"")+"]",i,n,r)});else if(n||"object"!==Q.type(e))r(t,e);else for(i in e)F(t+"["+i+"]",e[i],n,r)}function M(t){return Q.isWindow(t)?t:9===t.nodeType&&t.defaultView}var $=[],B=$.slice,z=$.concat,J=$.push,U=$.indexOf,K={},X=K.toString,V=K.hasOwnProperty,Y={},G=t.document,Z="2.1.4",Q=function(t,e){return new Q.fn.init(t,e)},tt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,et=/^-ms-/,nt=/-([\da-z])/gi,rt=function(t,e){return e.toUpperCase()};Q.fn=Q.prototype={jquery:Z,constructor:Q,selector:"",length:0,toArray:function(){return B.call(this)},get:function(t){return null!=t?t<0?this[t+this.length]:this[t]:B.call(this)},pushStack:function(t){var e=Q.merge(this.constructor(),t);return e.prevObject=this,e.context=this.context,e},each:function(t,e){return Q.each(this,t,e)},map:function(t){return this.pushStack(Q.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(B.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n<e?[this[n]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:J,sort:$.sort,splice:$.splice},Q.extend=Q.fn.extend=function(){var t,e,n,r,i,o,u=arguments[0]||{},a=1,c=arguments.length,s=!1;for("boolean"==typeof u&&(s=u,u=arguments[a]||{},a++),"object"==typeof u||Q.isFunction(u)||(u={}),a===c&&(u=this,a--);a<c;a++)if(null!=(t=arguments[a]))for(e in t)n=u[e],r=t[e],u!==r&&(s&&r&&(Q.isPlainObject(r)||(i=Q.isArray(r)))?(i?(i=!1,o=n&&Q.isArray(n)?n:[]):o=n&&Q.isPlainObject(n)?n:{},u[e]=Q.extend(s,o,r)):void 0!==r&&(u[e]=r));return u},Q.extend({expando:"jQuery"+(Z+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isFunction:function(t){return"function"===Q.type(t)},isArray:Array.isArray,isWindow:function(t){return null!=t&&t===t.window},isNumeric:function(t){return!Q.isArray(t)&&t-parseFloat(t)+1>=0},isPlainObject:function(t){return"object"===Q.type(t)&&!t.nodeType&&!Q.isWindow(t)&&!(t.constructor&&!V.call(t.constructor.prototype,"isPrototypeOf"))},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?K[X.call(t)]||"object":typeof t},globalEval:function(t){var e,n=eval;t=Q.trim(t),t&&(1===t.indexOf("use strict")?(e=G.createElement("script"),e.text=t,G.head.appendChild(e).parentNode.removeChild(e)):n(t))},camelCase:function(t){return t.replace(et,"ms-").replace(nt,rt)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e,r){var i,o=0,u=t.length,a=n(t);if(r){if(a)for(;o<u&&(i=e.apply(t[o],r),i!==!1);o++);else for(o in t)if(i=e.apply(t[o],r),i===!1)break}else if(a)for(;o<u&&(i=e.call(t[o],o,t[o]),i!==!1);o++);else for(o in t)if(i=e.call(t[o],o,t[o]),i===!1)break;return t},trim:function(t){return null==t?"":(t+"").replace(tt,"")},makeArray:function(t,e){var r=e||[];return null!=t&&(n(Object(t))?Q.merge(r,"string"==typeof t?[t]:t):J.call(r,t)),r},inArray:function(t,e,n){return null==e?-1:U.call(e,t,n)},merge:function(t,e){for(var n=+e.length,r=0,i=t.length;r<n;r++)t[i++]=e[r];return t.length=i,t},grep:function(t,e,n){for(var r,i=[],o=0,u=t.length,a=!n;o<u;o++)r=!e(t[o],o),r!==a&&i.push(t[o]);return i},map:function(t,e,r){var i,o=0,u=t.length,a=n(t),c=[];if(a)for(;o<u;o++)i=e(t[o],o,r),null!=i&&c.push(i);else for(o in t)i=e(t[o],o,r),null!=i&&c.push(i);return z.apply([],c)},guid:1,proxy:function(t,e){var n,r,i;if("string"==typeof e&&(n=t[e],e=t,t=n),Q.isFunction(t))return r=B.call(arguments,2),i=function(){return t.apply(e||this,r.concat(B.call(arguments)))},i.guid=t.guid=t.guid||Q.guid++,i},now:Date.now,support:Y}),Q.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(t,e){K["[object "+e+"]"]=e.toLowerCase()});var it=function(t){function e(t,e,n,r){var i,o,u,a,c,s,f,h,d,g;if((e?e.ownerDocument||e:F)!==O&&D(e),e=e||O,n=n||[],a=e.nodeType,"string"!=typeof t||!t||1!==a&&9!==a&&11!==a)return n;if(!r&&R){if(11!==a&&(i=yt.exec(t)))if(u=i[1]){if(9===a){if(o=e.getElementById(u),!o||!o.parentNode)return n;if(o.id===u)return n.push(o),n}else if(e.ownerDocument&&(o=e.ownerDocument.getElementById(u))&&I(e,o)&&o.id===u)return n.push(o),n}else{if(i[2])return Z.apply(n,e.getElementsByTagName(t)),n;if((u=i[3])&&_.getElementsByClassName)return Z.apply(n,e.getElementsByClassName(u)),n}if(_.qsa&&(!q||!q.test(t))){if(h=f=W,d=e,g=1!==a&&t,1===a&&"object"!==e.nodeName.toLowerCase()){for(s=T(t),(f=e.getAttribute("id"))?h=f.replace(xt,"\\$&"):e.setAttribute("id",h),h="[id='"+h+"'] ",c=s.length;c--;)s[c]=h+p(s[c]);d=bt.test(t)&&l(e.parentNode)||e,g=s.join(",")}if(g)try{return Z.apply(n,d.querySelectorAll(g)),n}catch(v){}finally{f||e.removeAttribute("id")}}}return A(t.replace(ct,"$1"),e,n,r)}function n(){function t(n,r){return e.push(n+" ")>w.cacheLength&&delete t[e.shift()],t[n+" "]=r}var e=[];return t}function r(t){return t[W]=!0,t}function i(t){var e=O.createElement("div");try{return!!t(e)}catch(n){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var n=t.split("|"),r=t.length;r--;)w.attrHandle[n[r]]=e}function u(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||K)-(~t.sourceIndex||K);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function a(t){return function(e){var n=e.nodeName.toLowerCase();return"input"===n&&e.type===t}}function c(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function s(t){return r(function(e){return e=+e,r(function(n,r){for(var i,o=t([],n.length,e),u=o.length;u--;)n[i=o[u]]&&(n[i]=!(r[i]=n[i]))})})}function l(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function f(){}function p(t){for(var e=0,n=t.length,r="";e<n;e++)r+=t[e].value;return r}function h(t,e,n){var r=e.dir,i=n&&"parentNode"===r,o=$++;return e.first?function(e,n,o){for(;e=e[r];)if(1===e.nodeType||i)return t(e,n,o)}:function(e,n,u){var a,c,s=[M,o];if(u){for(;e=e[r];)if((1===e.nodeType||i)&&t(e,n,u))return!0}else for(;e=e[r];)if(1===e.nodeType||i){if(c=e[W]||(e[W]={}),(a=c[r])&&a[0]===M&&a[1]===o)return s[2]=a[2];if(c[r]=s,s[2]=t(e,n,u))return!0}}}function d(t){return t.length>1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function g(t,n,r){for(var i=0,o=n.length;i<o;i++)e(t,n[i],r);return r}function v(t,e,n,r,i){for(var o,u=[],a=0,c=t.length,s=null!=e;a<c;a++)(o=t[a])&&(n&&!n(o,r,i)||(u.push(o),s&&e.push(a)));return u}function m(t,e,n,i,o,u){return i&&!i[W]&&(i=m(i)),o&&!o[W]&&(o=m(o,u)),r(function(r,u,a,c){var s,l,f,p=[],h=[],d=u.length,m=r||g(e||"*",a.nodeType?[a]:a,[]),y=!t||!r&&e?m:v(m,p,t,a,c),b=n?o||(r?t:d||i)?[]:u:y;if(n&&n(y,b,a,c),i)for(s=v(b,h),i(s,[],a,c),l=s.length;l--;)(f=s[l])&&(b[h[l]]=!(y[h[l]]=f));if(r){if(o||t){if(o){for(s=[],l=b.length;l--;)(f=b[l])&&s.push(y[l]=f);o(null,b=[],s,c)}for(l=b.length;l--;)(f=b[l])&&(s=o?tt(r,f):p[l])>-1&&(r[s]=!(u[s]=f))}}else b=v(b===u?b.splice(d,b.length):b),o?o(null,u,b,c):Z.apply(u,b)})}function y(t){for(var e,n,r,i=t.length,o=w.relative[t[0].type],u=o||w.relative[" "],a=o?1:0,c=h(function(t){return t===e},u,!0),s=h(function(t){return tt(e,t)>-1},u,!0),l=[function(t,n,r){var i=!o&&(r||n!==E)||((e=n).nodeType?c(t,n,r):s(t,n,r));return e=null,i}];a<i;a++)if(n=w.relative[t[a].type])l=[h(d(l),n)];else{if(n=w.filter[t[a].type].apply(null,t[a].matches),n[W]){for(r=++a;r<i&&!w.relative[t[r].type];r++);return m(a>1&&d(l),a>1&&p(t.slice(0,a-1).concat({value:" "===t[a-2].type?"*":""})).replace(ct,"$1"),n,a<r&&y(t.slice(a,r)),r<i&&y(t=t.slice(r)),r<i&&p(t))}l.push(n)}return d(l)}function b(t,n){var i=n.length>0,o=t.length>0,u=function(r,u,a,c,s){var l,f,p,h=0,d="0",g=r&&[],m=[],y=E,b=r||o&&w.find.TAG("*",s),x=M+=null==y?1:Math.random()||.1,_=b.length;for(s&&(E=u!==O&&u);d!==_&&null!=(l=b[d]);d++){if(o&&l){for(f=0;p=t[f++];)if(p(l,u,a)){c.push(l);break}s&&(M=x)}i&&((l=!p&&l)&&h--,r&&g.push(l))}if(h+=d,i&&d!==h){for(f=0;p=n[f++];)p(g,m,u,a);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Y.call(c));m=v(m)}Z.apply(c,m),s&&!r&&m.length>0&&h+n.length>1&&e.uniqueSort(c)}return s&&(M=x,E=y),g};return i?r(u):u}var x,_,w,C,k,T,j,A,E,S,N,D,O,L,R,q,H,P,I,W="sizzle"+1*new Date,F=t.document,M=0,$=0,B=n(),z=n(),J=n(),U=function(t,e){return t===e&&(N=!0),0},K=1<<31,X={}.hasOwnProperty,V=[],Y=V.pop,G=V.push,Z=V.push,Q=V.slice,tt=function(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1},et="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",nt="[\\x20\\t\\r\\n\\f]",rt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",it=rt.replace("w","w#"),ot="\\["+nt+"*("+rt+")(?:"+nt+"*([*^$|!~]?=)"+nt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+it+"))|)"+nt+"*\\]",ut=":("+rt+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ot+")*)|.*)\\)|)",at=new RegExp(nt+"+","g"),ct=new RegExp("^"+nt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+nt+"+$","g"),st=new RegExp("^"+nt+"*,"+nt+"*"),lt=new RegExp("^"+nt+"*([>+~]|"+nt+")"+nt+"*"),ft=new RegExp("="+nt+"*([^\\]'\"]*?)"+nt+"*\\]","g"),pt=new RegExp(ut),ht=new RegExp("^"+it+"$"),dt={ID:new RegExp("^#("+rt+")"),CLASS:new RegExp("^\\.("+rt+")"),TAG:new RegExp("^("+rt.replace("w","w*")+")"),ATTR:new RegExp("^"+ot),PSEUDO:new RegExp("^"+ut),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+nt+"*(even|odd|(([+-]|)(\\d*)n|)"+nt+"*(?:([+-]|)"+nt+"*(\\d+)|))"+nt+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+nt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+nt+"*((?:-\\d)?\\d*)"+nt+"*\\)|)(?=[^-]|$)","i")},gt=/^(?:input|select|textarea|button)$/i,vt=/^h\d$/i,mt=/^[^{]+\{\s*\[native \w/,yt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,bt=/[+~]/,xt=/'|\\/g,_t=new RegExp("\\\\([\\da-f]{1,6}"+nt+"?|("+nt+")|.)","ig"),wt=function(t,e,n){var r="0x"+e-65536;return r!==r||n?e:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Ct=function(){D()};try{Z.apply(V=Q.call(F.childNodes),F.childNodes),V[F.childNodes.length].nodeType}catch(kt){Z={apply:V.length?function(t,e){G.apply(t,Q.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}_=e.support={},k=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},D=e.setDocument=function(t){var e,n,r=t?t.ownerDocument||t:F;return r!==O&&9===r.nodeType&&r.documentElement?(O=r,L=r.documentElement,n=r.defaultView,n&&n!==n.top&&(n.addEventListener?n.addEventListener("unload",Ct,!1):n.attachEvent&&n.attachEvent("onunload",Ct)),R=!k(r),_.attributes=i(function(t){return t.className="i",!t.getAttribute("className")}),_.getElementsByTagName=i(function(t){return t.appendChild(r.createComment("")),!t.getElementsByTagName("*").length}),_.getElementsByClassName=mt.test(r.getElementsByClassName),_.getById=i(function(t){return L.appendChild(t).id=W,!r.getElementsByName||!r.getElementsByName(W).length}),_.getById?(w.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&R){var n=e.getElementById(t);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(t){var e=t.replace(_t,wt);return function(t){return t.getAttribute("id")===e}}):(delete w.find.ID,w.filter.ID=function(t){var e=t.replace(_t,wt);return function(t){var n="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}}),w.find.TAG=_.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):_.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=_.getElementsByClassName&&function(t,e){if(R)return e.getElementsByClassName(t)},H=[],q=[],(_.qsa=mt.test(r.querySelectorAll))&&(i(function(t){L.appendChild(t).innerHTML="<a id='"+W+"'></a><select id='"+W+"-\f]' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+nt+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||q.push("\\["+nt+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+W+"-]").length||q.push("~="),t.querySelectorAll(":checked").length||q.push(":checked"),t.querySelectorAll("a#"+W+"+*").length||q.push(".#.+[+~]")}),i(function(t){var e=r.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&q.push("name"+nt+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),q.push(",.*:")})),(_.matchesSelector=mt.test(P=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(t){_.disconnectedMatch=P.call(t,"div"),P.call(t,"[s!='']:x"),H.push("!=",ut)}),q=q.length&&new RegExp(q.join("|")),H=H.length&&new RegExp(H.join("|")),e=mt.test(L.compareDocumentPosition),I=e||mt.test(L.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},U=e?function(t,e){if(t===e)return N=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n?n:(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&n||!_.sortDetached&&e.compareDocumentPosition(t)===n?t===r||t.ownerDocument===F&&I(F,t)?-1:e===r||e.ownerDocument===F&&I(F,e)?1:S?tt(S,t)-tt(S,e):0:4&n?-1:1)}:function(t,e){if(t===e)return N=!0,0;var n,i=0,o=t.parentNode,a=e.parentNode,c=[t],s=[e];if(!o||!a)return t===r?-1:e===r?1:o?-1:a?1:S?tt(S,t)-tt(S,e):0;if(o===a)return u(t,e);for(n=t;n=n.parentNode;)c.unshift(n);for(n=e;n=n.parentNode;)s.unshift(n);for(;c[i]===s[i];)i++;return i?u(c[i],s[i]):c[i]===F?-1:s[i]===F?1:0},r):O},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==O&&D(t),n=n.replace(ft,"='$1']"),_.matchesSelector&&R&&(!H||!H.test(n))&&(!q||!q.test(n)))try{var r=P.call(t,n);if(r||_.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,O,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==O&&D(t),I(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==O&&D(t);var n=w.attrHandle[e.toLowerCase()],r=n&&X.call(w.attrHandle,e.toLowerCase())?n(t,e,!R):void 0;return void 0!==r?r:_.attributes||!R?t.getAttribute(e):(r=t.getAttributeNode(e))&&r.specified?r.value:null},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,n=[],r=0,i=0;if(N=!_.detectDuplicates,S=!_.sortStable&&t.slice(0),t.sort(U),N){for(;e=t[i++];)e===t[i]&&(r=n.push(i));for(;r--;)t.splice(n[r],1)}return S=null,t},C=e.getText=function(t){var e,n="",r=0,i=t.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=C(t)}else if(3===i||4===i)return t.nodeValue}else for(;e=t[r++];)n+=C(e);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:dt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(_t,wt),t[3]=(t[3]||t[4]||t[5]||"").replace(_t,wt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return dt.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&pt.test(n)&&(e=T(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(_t,wt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+nt+")"+t+"("+nt+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(at," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),u="last"!==t.slice(-4),a="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,c){var s,l,f,p,h,d,g=o!==u?"nextSibling":"previousSibling",v=e.parentNode,m=a&&e.nodeName.toLowerCase(),y=!c&&!a;if(v){if(o){for(;g;){for(f=e;f=f[g];)if(a?f.nodeName.toLowerCase()===m:1===f.nodeType)return!1;d=g="only"===t&&!d&&"nextSibling"}return!0}if(d=[u?v.firstChild:v.lastChild],u&&y){for(l=v[W]||(v[W]={}),s=l[t]||[],h=s[0]===M&&s[1],p=s[0]===M&&s[2],f=h&&v.childNodes[h];f=++h&&f&&f[g]||(p=h=0)||d.pop();)if(1===f.nodeType&&++p&&f===e){l[t]=[M,h,p];break}}else if(y&&(s=(e[W]||(e[W]={}))[t])&&s[0]===M)p=s[1];else for(;(f=++h&&f&&f[g]||(p=h=0)||d.pop())&&((a?f.nodeName.toLowerCase()!==m:1!==f.nodeType)||!++p||(y&&((f[W]||(f[W]={}))[t]=[M,p]),f!==e)););return p-=i,p===r||p%r===0&&p/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[W]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(t,e){for(var r,i=o(t,n),u=i.length;u--;)r=tt(t,i[u]),t[r]=!(e[r]=i[u])}):function(t){return o(t,0,i)}):o}},pseudos:{not:r(function(t){var e=[],n=[],i=j(t.replace(ct,"$1"));return i[W]?r(function(t,e,n,r){for(var o,u=i(t,null,r,[]),a=t.length;a--;)(o=u[a])&&(t[a]=!(e[a]=o))}):function(t,r,o){return e[0]=t,i(e,null,o,n),e[0]=null,!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(t){return t=t.replace(_t,wt),function(e){return(e.textContent||e.innerText||C(e)).indexOf(t)>-1}}),lang:r(function(t){return ht.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(_t,wt).toLowerCase(),function(e){var n;do if(n=R?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===L},focus:function(t){return t===O.activeElement&&(!O.hasFocus||O.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:function(t){return t.disabled===!1},disabled:function(t){return t.disabled===!0},checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,t.selected===!0},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!w.pseudos.empty(t)},header:function(t){return vt.test(t.nodeName)},input:function(t){return gt.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:s(function(){return[0]}),last:s(function(t,e){return[e-1]}),eq:s(function(t,e,n){return[n<0?n+e:n]}),even:s(function(t,e){for(var n=0;n<e;n+=2)t.push(n);return t}),odd:s(function(t,e){for(var n=1;n<e;n+=2)t.push(n);return t}),lt:s(function(t,e,n){for(var r=n<0?n+e:n;--r>=0;)t.push(r);return t}),gt:s(function(t,e,n){for(var r=n<0?n+e:n;++r<e;)t.push(r);return t})}},w.pseudos.nth=w.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[x]=a(x);for(x in{submit:!0,reset:!0})w.pseudos[x]=c(x);return f.prototype=w.filters=w.pseudos,w.setFilters=new f,T=e.tokenize=function(t,n){var r,i,o,u,a,c,s,l=z[t+" "];if(l)return n?0:l.slice(0);for(a=t,c=[],s=w.preFilter;a;){r&&!(i=st.exec(a))||(i&&(a=a.slice(i[0].length)||a),c.push(o=[])),r=!1,(i=lt.exec(a))&&(r=i.shift(),o.push({value:r,type:i[0].replace(ct," ")}),a=a.slice(r.length));for(u in w.filter)!(i=dt[u].exec(a))||s[u]&&!(i=s[u](i))||(r=i.shift(),o.push({value:r,type:u,matches:i}),a=a.slice(r.length));if(!r)break}return n?a.length:a?e.error(t):z(t,c).slice(0)},j=e.compile=function(t,e){var n,r=[],i=[],o=J[t+" "];if(!o){for(e||(e=T(t)),n=e.length;n--;)o=y(e[n]),o[W]?r.push(o):i.push(o);o=J(t,b(i,r)),o.selector=t}return o},A=e.select=function(t,e,n,r){var i,o,u,a,c,s="function"==typeof t&&t,f=!r&&T(t=s.selector||t);if(n=n||[],1===f.length){if(o=f[0]=f[0].slice(0),o.length>2&&"ID"===(u=o[0]).type&&_.getById&&9===e.nodeType&&R&&w.relative[o[1].type]){if(e=(w.find.ID(u.matches[0].replace(_t,wt),e)||[])[0],!e)return n;s&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(i=dt.needsContext.test(t)?0:o.length;i--&&(u=o[i],!w.relative[a=u.type]);)if((c=w.find[a])&&(r=c(u.matches[0].replace(_t,wt),bt.test(o[0].type)&&l(e.parentNode)||e))){if(o.splice(i,1),t=r.length&&p(o),!t)return Z.apply(n,r),n;break}}return(s||j(t,f))(r,e,!R,n,bt.test(t)&&l(e.parentNode)||e),n},_.sortStable=W.split("").sort(U).join("")===W,_.detectDuplicates=!!N,D(),_.sortDetached=i(function(t){return 1&t.compareDocumentPosition(O.createElement("div"))}),i(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),_.attributes&&i(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),i(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,n){var r;if(!n)return t[e]===!0?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null}),e}(t);Q.find=it,Q.expr=it.selectors,Q.expr[":"]=Q.expr.pseudos,Q.unique=it.uniqueSort,Q.text=it.getText,Q.isXMLDoc=it.isXML,Q.contains=it.contains;var ot=Q.expr.match.needsContext,ut=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,at=/^.[^:#\[\.,]*$/;Q.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?Q.find.matchesSelector(r,t)?[r]:[]:Q.find.matches(t,Q.grep(e,function(t){return 1===t.nodeType}))},Q.fn.extend({find:function(t){var e,n=this.length,r=[],i=this;if("string"!=typeof t)return this.pushStack(Q(t).filter(function(){
 for(e=0;e<n;e++)if(Q.contains(i[e],this))return!0}));for(e=0;e<n;e++)Q.find(t,i[e],r);return r=this.pushStack(n>1?Q.unique(r):r),r.selector=this.selector?this.selector+" "+t:t,r},filter:function(t){return this.pushStack(r(this,t||[],!1))},not:function(t){return this.pushStack(r(this,t||[],!0))},is:function(t){return!!r(this,"string"==typeof t&&ot.test(t)?Q(t):t||[],!1).length}});var ct,st=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,lt=Q.fn.init=function(t,e){var n,r;if(!t)return this;if("string"==typeof t){if(n="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:st.exec(t),!n||!n[1]&&e)return!e||e.jquery?(e||ct).find(t):this.constructor(e).find(t);if(n[1]){if(e=e instanceof Q?e[0]:e,Q.merge(this,Q.parseHTML(n[1],e&&e.nodeType?e.ownerDocument||e:G,!0)),ut.test(n[1])&&Q.isPlainObject(e))for(n in e)Q.isFunction(this[n])?this[n](e[n]):this.attr(n,e[n]);return this}return r=G.getElementById(n[2]),r&&r.parentNode&&(this.length=1,this[0]=r),this.context=G,this.selector=t,this}return t.nodeType?(this.context=this[0]=t,this.length=1,this):Q.isFunction(t)?"undefined"!=typeof ct.ready?ct.ready(t):t(Q):(void 0!==t.selector&&(this.selector=t.selector,this.context=t.context),Q.makeArray(t,this))};lt.prototype=Q.fn,ct=Q(G);var ft=/^(?:parents|prev(?:Until|All))/,pt={children:!0,contents:!0,next:!0,prev:!0};Q.extend({dir:function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&Q(t).is(n))break;r.push(t)}return r},sibling:function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n}}),Q.fn.extend({has:function(t){var e=Q(t,this),n=e.length;return this.filter(function(){for(var t=0;t<n;t++)if(Q.contains(this,e[t]))return!0})},closest:function(t,e){for(var n,r=0,i=this.length,o=[],u=ot.test(t)||"string"!=typeof t?Q(t,e||this.context):0;r<i;r++)for(n=this[r];n&&n!==e;n=n.parentNode)if(n.nodeType<11&&(u?u.index(n)>-1:1===n.nodeType&&Q.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?Q.unique(o):o)},index:function(t){return t?"string"==typeof t?U.call(Q(t),this[0]):U.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(Q.unique(Q.merge(this.get(),Q(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),Q.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return Q.dir(t,"parentNode")},parentsUntil:function(t,e,n){return Q.dir(t,"parentNode",n)},next:function(t){return i(t,"nextSibling")},prev:function(t){return i(t,"previousSibling")},nextAll:function(t){return Q.dir(t,"nextSibling")},prevAll:function(t){return Q.dir(t,"previousSibling")},nextUntil:function(t,e,n){return Q.dir(t,"nextSibling",n)},prevUntil:function(t,e,n){return Q.dir(t,"previousSibling",n)},siblings:function(t){return Q.sibling((t.parentNode||{}).firstChild,t)},children:function(t){return Q.sibling(t.firstChild)},contents:function(t){return t.contentDocument||Q.merge([],t.childNodes)}},function(t,e){Q.fn[t]=function(n,r){var i=Q.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=Q.filter(r,i)),this.length>1&&(pt[t]||Q.unique(i),ft.test(t)&&i.reverse()),this.pushStack(i)}});var ht=/\S+/g,dt={};Q.Callbacks=function(t){t="string"==typeof t?dt[t]||o(t):Q.extend({},t);var e,n,r,i,u,a,c=[],s=!t.once&&[],l=function(o){for(e=t.memory&&o,n=!0,a=i||0,i=0,u=c.length,r=!0;c&&a<u;a++)if(c[a].apply(o[0],o[1])===!1&&t.stopOnFalse){e=!1;break}r=!1,c&&(s?s.length&&l(s.shift()):e?c=[]:f.disable())},f={add:function(){if(c){var n=c.length;!function o(e){Q.each(e,function(e,n){var r=Q.type(n);"function"===r?t.unique&&f.has(n)||c.push(n):n&&n.length&&"string"!==r&&o(n)})}(arguments),r?u=c.length:e&&(i=n,l(e))}return this},remove:function(){return c&&Q.each(arguments,function(t,e){for(var n;(n=Q.inArray(e,c,n))>-1;)c.splice(n,1),r&&(n<=u&&u--,n<=a&&a--)}),this},has:function(t){return t?Q.inArray(t,c)>-1:!(!c||!c.length)},empty:function(){return c=[],u=0,this},disable:function(){return c=s=e=void 0,this},disabled:function(){return!c},lock:function(){return s=void 0,e||f.disable(),this},locked:function(){return!s},fireWith:function(t,e){return!c||n&&!s||(e=e||[],e=[t,e.slice?e.slice():e],r?s.push(e):l(e)),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!n}};return f},Q.extend({Deferred:function(t){var e=[["resolve","done",Q.Callbacks("once memory"),"resolved"],["reject","fail",Q.Callbacks("once memory"),"rejected"],["notify","progress",Q.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var t=arguments;return Q.Deferred(function(n){Q.each(e,function(e,o){var u=Q.isFunction(t[e])&&t[e];i[o[1]](function(){var t=u&&u.apply(this,arguments);t&&Q.isFunction(t.promise)?t.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[o[0]+"With"](this===r?n.promise():this,u?[t]:arguments)})}),t=null}).promise()},promise:function(t){return null!=t?Q.extend(t,r):r}},i={};return r.pipe=r.then,Q.each(e,function(t,o){var u=o[2],a=o[3];r[o[1]]=u.add,a&&u.add(function(){n=a},e[1^t][2].disable,e[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=u.fireWith}),r.promise(i),t&&t.call(i,i),i},when:function(t){var e,n,r,i=0,o=B.call(arguments),u=o.length,a=1!==u||t&&Q.isFunction(t.promise)?u:0,c=1===a?t:Q.Deferred(),s=function(t,n,r){return function(i){n[t]=this,r[t]=arguments.length>1?B.call(arguments):i,r===e?c.notifyWith(n,r):--a||c.resolveWith(n,r)}};if(u>1)for(e=new Array(u),n=new Array(u),r=new Array(u);i<u;i++)o[i]&&Q.isFunction(o[i].promise)?o[i].promise().done(s(i,r,o)).fail(c.reject).progress(s(i,n,e)):--a;return a||c.resolveWith(r,o),c.promise()}});var gt;Q.fn.ready=function(t){return Q.ready.promise().done(t),this},Q.extend({isReady:!1,readyWait:1,holdReady:function(t){t?Q.readyWait++:Q.ready(!0)},ready:function(t){(t===!0?--Q.readyWait:Q.isReady)||(Q.isReady=!0,t!==!0&&--Q.readyWait>0||(gt.resolveWith(G,[Q]),Q.fn.triggerHandler&&(Q(G).triggerHandler("ready"),Q(G).off("ready"))))}}),Q.ready.promise=function(e){return gt||(gt=Q.Deferred(),"complete"===G.readyState?setTimeout(Q.ready):(G.addEventListener("DOMContentLoaded",u,!1),t.addEventListener("load",u,!1))),gt.promise(e)},Q.ready.promise();var vt=Q.access=function(t,e,n,r,i,o,u){var a=0,c=t.length,s=null==n;if("object"===Q.type(n)){i=!0;for(a in n)Q.access(t,e,a,n[a],!0,o,u)}else if(void 0!==r&&(i=!0,Q.isFunction(r)||(u=!0),s&&(u?(e.call(t,r),e=null):(s=e,e=function(t,e,n){return s.call(Q(t),n)})),e))for(;a<c;a++)e(t[a],n,u?r:r.call(t[a],a,e(t[a],n)));return i?t:s?e.call(t):c?e(t[0],n):o};Q.acceptData=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType},a.uid=1,a.accepts=Q.acceptData,a.prototype={key:function(t){if(!a.accepts(t))return 0;var e={},n=t[this.expando];if(!n){n=a.uid++;try{e[this.expando]={value:n},Object.defineProperties(t,e)}catch(r){e[this.expando]=n,Q.extend(t,e)}}return this.cache[n]||(this.cache[n]={}),n},set:function(t,e,n){var r,i=this.key(t),o=this.cache[i];if("string"==typeof e)o[e]=n;else if(Q.isEmptyObject(o))Q.extend(this.cache[i],e);else for(r in e)o[r]=e[r];return o},get:function(t,e){var n=this.cache[this.key(t)];return void 0===e?n:n[e]},access:function(t,e,n){var r;return void 0===e||e&&"string"==typeof e&&void 0===n?(r=this.get(t,e),void 0!==r?r:this.get(t,Q.camelCase(e))):(this.set(t,e,n),void 0!==n?n:e)},remove:function(t,e){var n,r,i,o=this.key(t),u=this.cache[o];if(void 0===e)this.cache[o]={};else{Q.isArray(e)?r=e.concat(e.map(Q.camelCase)):(i=Q.camelCase(e),e in u?r=[e,i]:(r=i,r=r in u?[r]:r.match(ht)||[])),n=r.length;for(;n--;)delete u[r[n]]}},hasData:function(t){return!Q.isEmptyObject(this.cache[t[this.expando]]||{})},discard:function(t){t[this.expando]&&delete this.cache[t[this.expando]]}};var mt=new a,yt=new a,bt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,xt=/([A-Z])/g;Q.extend({hasData:function(t){return yt.hasData(t)||mt.hasData(t)},data:function(t,e,n){return yt.access(t,e,n)},removeData:function(t,e){yt.remove(t,e)},_data:function(t,e,n){return mt.access(t,e,n)},_removeData:function(t,e){mt.remove(t,e)}}),Q.fn.extend({data:function(t,e){var n,r,i,o=this[0],u=o&&o.attributes;if(void 0===t){if(this.length&&(i=yt.get(o),1===o.nodeType&&!mt.get(o,"hasDataAttrs"))){for(n=u.length;n--;)u[n]&&(r=u[n].name,0===r.indexOf("data-")&&(r=Q.camelCase(r.slice(5)),c(o,r,i[r])));mt.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof t?this.each(function(){yt.set(this,t)}):vt(this,function(e){var n,r=Q.camelCase(t);if(o&&void 0===e){if(n=yt.get(o,t),void 0!==n)return n;if(n=yt.get(o,r),void 0!==n)return n;if(n=c(o,r,void 0),void 0!==n)return n}else this.each(function(){var n=yt.get(this,r);yt.set(this,r,e),t.indexOf("-")!==-1&&void 0!==n&&yt.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){yt.remove(this,t)})}}),Q.extend({queue:function(t,e,n){var r;if(t)return e=(e||"fx")+"queue",r=mt.get(t,e),n&&(!r||Q.isArray(n)?r=mt.access(t,e,Q.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){e=e||"fx";var n=Q.queue(t,e),r=n.length,i=n.shift(),o=Q._queueHooks(t,e),u=function(){Q.dequeue(t,e)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,u,o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return mt.get(t,n)||mt.access(t,n,{empty:Q.Callbacks("once memory").add(function(){mt.remove(t,[e+"queue",n])})})}}),Q.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length<n?Q.queue(this[0],t):void 0===e?this:this.each(function(){var n=Q.queue(this,t,e);Q._queueHooks(this,t),"fx"===t&&"inprogress"!==n[0]&&Q.dequeue(this,t)})},dequeue:function(t){return this.each(function(){Q.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var n,r=1,i=Q.Deferred(),o=this,u=this.length,a=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";u--;)n=mt.get(o[u],t+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(e)}});var _t=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,wt=["Top","Right","Bottom","Left"],Ct=function(t,e){return t=e||t,"none"===Q.css(t,"display")||!Q.contains(t.ownerDocument,t)},kt=/^(?:checkbox|radio)$/i;!function(){var t=G.createDocumentFragment(),e=t.appendChild(G.createElement("div")),n=G.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),Y.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",Y.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Tt="undefined";Y.focusinBubbles="onfocusin"in t;var jt=/^key/,At=/^(?:mouse|pointer|contextmenu)|click/,Et=/^(?:focusinfocus|focusoutblur)$/,St=/^([^.]*)(?:\.(.+)|)$/;Q.event={global:{},add:function(t,e,n,r,i){var o,u,a,c,s,l,f,p,h,d,g,v=mt.get(t);if(v)for(n.handler&&(o=n,n=o.handler,i=o.selector),n.guid||(n.guid=Q.guid++),(c=v.events)||(c=v.events={}),(u=v.handle)||(u=v.handle=function(e){return typeof Q!==Tt&&Q.event.triggered!==e.type?Q.event.dispatch.apply(t,arguments):void 0}),e=(e||"").match(ht)||[""],s=e.length;s--;)a=St.exec(e[s])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=Q.event.special[h]||{},h=(i?f.delegateType:f.bindType)||h,f=Q.event.special[h]||{},l=Q.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&Q.expr.match.needsContext.test(i),namespace:d.join(".")},o),(p=c[h])||(p=c[h]=[],p.delegateCount=0,f.setup&&f.setup.call(t,r,d,u)!==!1||t.addEventListener&&t.addEventListener(h,u,!1)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,l):p.push(l),Q.event.global[h]=!0)},remove:function(t,e,n,r,i){var o,u,a,c,s,l,f,p,h,d,g,v=mt.hasData(t)&&mt.get(t);if(v&&(c=v.events)){for(e=(e||"").match(ht)||[""],s=e.length;s--;)if(a=St.exec(e[s])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=Q.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=c[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=p.length;o--;)l=p[o],!i&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(o,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(t,l));u&&!p.length&&(f.teardown&&f.teardown.call(t,d,v.handle)!==!1||Q.removeEvent(t,h,v.handle),delete c[h])}else for(h in c)Q.event.remove(t,h+e[s],n,r,!0);Q.isEmptyObject(c)&&(delete v.handle,mt.remove(t,"events"))}},trigger:function(e,n,r,i){var o,u,a,c,s,l,f,p=[r||G],h=V.call(e,"type")?e.type:e,d=V.call(e,"namespace")?e.namespace.split("."):[];if(u=a=r=r||G,3!==r.nodeType&&8!==r.nodeType&&!Et.test(h+Q.event.triggered)&&(h.indexOf(".")>=0&&(d=h.split("."),h=d.shift(),d.sort()),s=h.indexOf(":")<0&&"on"+h,e=e[Q.expando]?e:new Q.Event(h,"object"==typeof e&&e),e.isTrigger=i?2:3,e.namespace=d.join("."),e.namespace_re=e.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),n=null==n?[e]:Q.makeArray(n,[e]),f=Q.event.special[h]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!Q.isWindow(r)){for(c=f.delegateType||h,Et.test(c+h)||(u=u.parentNode);u;u=u.parentNode)p.push(u),a=u;a===(r.ownerDocument||G)&&p.push(a.defaultView||a.parentWindow||t)}for(o=0;(u=p[o++])&&!e.isPropagationStopped();)e.type=o>1?c:f.bindType||h,l=(mt.get(u,"events")||{})[e.type]&&mt.get(u,"handle"),l&&l.apply(u,n),l=s&&u[s],l&&l.apply&&Q.acceptData(u)&&(e.result=l.apply(u,n),e.result===!1&&e.preventDefault());return e.type=h,i||e.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!Q.acceptData(r)||s&&Q.isFunction(r[h])&&!Q.isWindow(r)&&(a=r[s],a&&(r[s]=null),Q.event.triggered=h,r[h](),Q.event.triggered=void 0,a&&(r[s]=a)),e.result}},dispatch:function(t){t=Q.event.fix(t);var e,n,r,i,o,u=[],a=B.call(arguments),c=(mt.get(this,"events")||{})[t.type]||[],s=Q.event.special[t.type]||{};if(a[0]=t,t.delegateTarget=this,!s.preDispatch||s.preDispatch.call(this,t)!==!1){for(u=Q.event.handlers.call(this,t,c),e=0;(i=u[e++])&&!t.isPropagationStopped();)for(t.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!t.isImmediatePropagationStopped();)t.namespace_re&&!t.namespace_re.test(o.namespace)||(t.handleObj=o,t.data=o.data,r=((Q.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),void 0!==r&&(t.result=r)===!1&&(t.preventDefault(),t.stopPropagation()));return s.postDispatch&&s.postDispatch.call(this,t),t.result}},handlers:function(t,e){var n,r,i,o,u=[],a=e.delegateCount,c=t.target;if(a&&c.nodeType&&(!t.button||"click"!==t.type))for(;c!==this;c=c.parentNode||this)if(c.disabled!==!0||"click"!==t.type){for(r=[],n=0;n<a;n++)o=e[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?Q(i,this).index(c)>=0:Q.find(i,this,null,[c]).length),r[i]&&r.push(o);r.length&&u.push({elem:c,handlers:r})}return a<e.length&&u.push({elem:this,handlers:e.slice(a)}),u},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(t,e){return null==t.which&&(t.which=null!=e.charCode?e.charCode:e.keyCode),t}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(t,e){var n,r,i,o=e.button;return null==t.pageX&&null!=e.clientX&&(n=t.target.ownerDocument||G,r=n.documentElement,i=n.body,t.pageX=e.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),t.pageY=e.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),t.which||void 0===o||(t.which=1&o?1:2&o?3:4&o?2:0),t}},fix:function(t){if(t[Q.expando])return t;var e,n,r,i=t.type,o=t,u=this.fixHooks[i];for(u||(this.fixHooks[i]=u=At.test(i)?this.mouseHooks:jt.test(i)?this.keyHooks:{}),r=u.props?this.props.concat(u.props):this.props,t=new Q.Event(o),e=r.length;e--;)n=r[e],t[n]=o[n];return t.target||(t.target=G),3===t.target.nodeType&&(t.target=t.target.parentNode),u.filter?u.filter(t,o):t},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==f()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===f()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&Q.nodeName(this,"input"))return this.click(),!1},_default:function(t){return Q.nodeName(t.target,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}},simulate:function(t,e,n,r){var i=Q.extend(new Q.Event,n,{type:t,isSimulated:!0,originalEvent:{}});r?Q.event.trigger(i,null,e):Q.event.dispatch.call(e,i),i.isDefaultPrevented()&&n.preventDefault()}},Q.removeEvent=function(t,e,n){t.removeEventListener&&t.removeEventListener(e,n,!1)},Q.Event=function(t,e){return this instanceof Q.Event?(t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&t.returnValue===!1?s:l):this.type=t,e&&Q.extend(this,e),this.timeStamp=t&&t.timeStamp||Q.now(),void(this[Q.expando]=!0)):new Q.Event(t,e)},Q.Event.prototype={isDefaultPrevented:l,isPropagationStopped:l,isImmediatePropagationStopped:l,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=s,t&&t.preventDefault&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=s,t&&t.stopPropagation&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=s,t&&t.stopImmediatePropagation&&t.stopImmediatePropagation(),this.stopPropagation()}},Q.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){Q.event.special[t]={delegateType:e,bindType:e,handle:function(t){var n,r=this,i=t.relatedTarget,o=t.handleObj;return i&&(i===r||Q.contains(r,i))||(t.type=o.origType,n=o.handler.apply(this,arguments),t.type=e),n}}}),Y.focusinBubbles||Q.each({focus:"focusin",blur:"focusout"},function(t,e){var n=function(t){Q.event.simulate(e,t.target,Q.event.fix(t),!0)};Q.event.special[e]={setup:function(){var r=this.ownerDocument||this,i=mt.access(r,e);i||r.addEventListener(t,n,!0),mt.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=mt.access(r,e)-1;i?mt.access(r,e,i):(r.removeEventListener(t,n,!0),mt.remove(r,e))}}}),Q.fn.extend({on:function(t,e,n,r,i){var o,u;if("object"==typeof t){"string"!=typeof e&&(n=n||e,e=void 0);for(u in t)this.on(u,e,n,t[u],i);return this}if(null==n&&null==r?(r=e,n=e=void 0):null==r&&("string"==typeof e?(r=n,n=void 0):(r=n,n=e,e=void 0)),r===!1)r=l;else if(!r)return this;return 1===i&&(o=r,r=function(t){return Q().off(t),o.apply(this,arguments)},r.guid=o.guid||(o.guid=Q.guid++)),this.each(function(){Q.event.add(this,t,r,n,e)})},one:function(t,e,n,r){return this.on(t,e,n,r,1)},off:function(t,e,n){var r,i;if(t&&t.preventDefault&&t.handleObj)return r=t.handleObj,Q(t.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof t){for(i in t)this.off(i,e,t[i]);return this}return e!==!1&&"function"!=typeof e||(n=e,e=void 0),n===!1&&(n=l),this.each(function(){Q.event.remove(this,t,n,e)})},trigger:function(t,e){return this.each(function(){Q.event.trigger(t,e,this)})},triggerHandler:function(t,e){var n=this[0];if(n)return Q.event.trigger(t,e,n,!0)}});var Nt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Dt=/<([\w:]+)/,Ot=/<|&#?\w+;/,Lt=/<(?:script|style|link)/i,Rt=/checked\s*(?:[^=]|=\s*.checked.)/i,qt=/^$|\/(?:java|ecma)script/i,Ht=/^true\/(.*)/,Pt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,It={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};It.optgroup=It.option,It.tbody=It.tfoot=It.colgroup=It.caption=It.thead,It.th=It.td,Q.extend({clone:function(t,e,n){var r,i,o,u,a=t.cloneNode(!0),c=Q.contains(t.ownerDocument,t);if(!(Y.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||Q.isXMLDoc(t)))for(u=m(a),o=m(t),r=0,i=o.length;r<i;r++)y(o[r],u[r]);if(e)if(n)for(o=o||m(t),u=u||m(a),r=0,i=o.length;r<i;r++)v(o[r],u[r]);else v(t,a);return u=m(a,"script"),u.length>0&&g(u,!c&&m(t,"script")),a},buildFragment:function(t,e,n,r){for(var i,o,u,a,c,s,l=e.createDocumentFragment(),f=[],p=0,h=t.length;p<h;p++)if(i=t[p],i||0===i)if("object"===Q.type(i))Q.merge(f,i.nodeType?[i]:i);else if(Ot.test(i)){for(o=o||l.appendChild(e.createElement("div")),u=(Dt.exec(i)||["",""])[1].toLowerCase(),a=It[u]||It._default,o.innerHTML=a[1]+i.replace(Nt,"<$1></$2>")+a[2],s=a[0];s--;)o=o.lastChild;Q.merge(f,o.childNodes),o=l.firstChild,o.textContent=""}else f.push(e.createTextNode(i));for(l.textContent="",p=0;i=f[p++];)if((!r||Q.inArray(i,r)===-1)&&(c=Q.contains(i.ownerDocument,i),o=m(l.appendChild(i),"script"),c&&g(o),n))for(s=0;i=o[s++];)qt.test(i.type||"")&&n.push(i);return l},cleanData:function(t){for(var e,n,r,i,o=Q.event.special,u=0;void 0!==(n=t[u]);u++){if(Q.acceptData(n)&&(i=n[mt.expando],i&&(e=mt.cache[i]))){if(e.events)for(r in e.events)o[r]?Q.event.remove(n,r):Q.removeEvent(n,r,e.handle);mt.cache[i]&&delete mt.cache[i]}delete yt.cache[n[yt.expando]]}}}),Q.fn.extend({text:function(t){return vt(this,function(t){return void 0===t?Q.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return this.domManip(arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=p(this,t);e.appendChild(t)}})},prepend:function(){return this.domManip(arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=p(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return this.domManip(arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},remove:function(t,e){for(var n,r=t?Q.filter(t,this):this,i=0;null!=(n=r[i]);i++)e||1!==n.nodeType||Q.cleanData(m(n)),n.parentNode&&(e&&Q.contains(n.ownerDocument,n)&&g(m(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(Q.cleanData(m(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return Q.clone(this,t,e)})},html:function(t){return vt(this,function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Lt.test(t)&&!It[(Dt.exec(t)||["",""])[1].toLowerCase()]){t=t.replace(Nt,"<$1></$2>");try{for(;n<r;n++)e=this[n]||{},1===e.nodeType&&(Q.cleanData(m(e,!1)),e.innerHTML=t);e=0}catch(i){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=arguments[0];return this.domManip(arguments,function(e){t=this.parentNode,Q.cleanData(m(this)),t&&t.replaceChild(e,this)}),t&&(t.length||t.nodeType)?this:this.remove()},detach:function(t){return this.remove(t,!0)},domManip:function(t,e){t=z.apply([],t);var n,r,i,o,u,a,c=0,s=this.length,l=this,f=s-1,p=t[0],g=Q.isFunction(p);if(g||s>1&&"string"==typeof p&&!Y.checkClone&&Rt.test(p))return this.each(function(n){var r=l.eq(n);g&&(t[0]=p.call(this,n,r.html())),r.domManip(t,e)});if(s&&(n=Q.buildFragment(t,this[0].ownerDocument,!1,this),r=n.firstChild,1===n.childNodes.length&&(n=r),r)){for(i=Q.map(m(n,"script"),h),o=i.length;c<s;c++)u=n,c!==f&&(u=Q.clone(u,!0,!0),o&&Q.merge(i,m(u,"script"))),e.call(this[c],u,c);if(o)for(a=i[i.length-1].ownerDocument,Q.map(i,d),c=0;c<o;c++)u=i[c],qt.test(u.type||"")&&!mt.access(u,"globalEval")&&Q.contains(a,u)&&(u.src?Q._evalUrl&&Q._evalUrl(u.src):Q.globalEval(u.textContent.replace(Pt,"")))}return this}}),Q.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){Q.fn[t]=function(t){for(var n,r=[],i=Q(t),o=i.length-1,u=0;u<=o;u++)n=u===o?this:this.clone(!0),Q(i[u])[e](n),J.apply(r,n.get());return this.pushStack(r)}});var Wt,Ft={},Mt=/^margin/,$t=new RegExp("^("+_t+")(?!px)[a-z%]+$","i"),Bt=function(e){return e.ownerDocument.defaultView.opener?e.ownerDocument.defaultView.getComputedStyle(e,null):t.getComputedStyle(e,null)};!function(){function e(){u.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",u.innerHTML="",i.appendChild(o);var e=t.getComputedStyle(u,null);n="1%"!==e.top,r="4px"===e.width,i.removeChild(o)}var n,r,i=G.documentElement,o=G.createElement("div"),u=G.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",Y.clearCloneStyle="content-box"===u.style.backgroundClip,o.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",o.appendChild(u),t.getComputedStyle&&Q.extend(Y,{pixelPosition:function(){return e(),n},boxSizingReliable:function(){return null==r&&e(),r},reliableMarginRight:function(){var e,n=u.appendChild(G.createElement("div"));return n.style.cssText=u.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",n.style.marginRight=n.style.width="0",u.style.width="1px",i.appendChild(o),e=!parseFloat(t.getComputedStyle(n,null).marginRight),i.removeChild(o),u.removeChild(n),e}}))}(),Q.swap=function(t,e,n,r){var i,o,u={};for(o in e)u[o]=t.style[o],t.style[o]=e[o];i=n.apply(t,r||[]);for(o in e)t.style[o]=u[o];return i};var zt=/^(none|table(?!-c[ea]).+)/,Jt=new RegExp("^("+_t+")(.*)$","i"),Ut=new RegExp("^([+-])=("+_t+")","i"),Kt={position:"absolute",visibility:"hidden",display:"block"},Xt={letterSpacing:"0",fontWeight:"400"},Vt=["Webkit","O","Moz","ms"];Q.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=_(t,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(t,e,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var i,o,u,a=Q.camelCase(e),c=t.style;return e=Q.cssProps[a]||(Q.cssProps[a]=C(c,a)),u=Q.cssHooks[e]||Q.cssHooks[a],void 0===n?u&&"get"in u&&void 0!==(i=u.get(t,!1,r))?i:c[e]:(o=typeof n,"string"===o&&(i=Ut.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(Q.css(t,e)),o="number"),null!=n&&n===n&&("number"!==o||Q.cssNumber[a]||(n+="px"),Y.clearCloneStyle||""!==n||0!==e.indexOf("background")||(c[e]="inherit"),u&&"set"in u&&void 0===(n=u.set(t,n,r))||(c[e]=n)),void 0)}},css:function(t,e,n,r){var i,o,u,a=Q.camelCase(e);return e=Q.cssProps[a]||(Q.cssProps[a]=C(t.style,a)),u=Q.cssHooks[e]||Q.cssHooks[a],u&&"get"in u&&(i=u.get(t,!0,n)),void 0===i&&(i=_(t,e,r)),"normal"===i&&e in Xt&&(i=Xt[e]),""===n||n?(o=parseFloat(i),n===!0||Q.isNumeric(o)?o||0:i):i}}),Q.each(["height","width"],function(t,e){Q.cssHooks[e]={get:function(t,n,r){if(n)return zt.test(Q.css(t,"display"))&&0===t.offsetWidth?Q.swap(t,Kt,function(){return j(t,e,r)}):j(t,e,r)},set:function(t,n,r){var i=r&&Bt(t);return k(t,n,r?T(t,e,r,"border-box"===Q.css(t,"boxSizing",!1,i),i):0)}}}),Q.cssHooks.marginRight=w(Y.reliableMarginRight,function(t,e){if(e)return Q.swap(t,{display:"inline-block"},_,[t,"marginRight"])}),Q.each({margin:"",padding:"",border:"Width"},function(t,e){Q.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+wt[r]+e]=o[r]||o[r-2]||o[0];return i}},Mt.test(t)||(Q.cssHooks[t+e].set=k)}),Q.fn.extend({css:function(t,e){return vt(this,function(t,e,n){var r,i,o={},u=0;if(Q.isArray(e)){for(r=Bt(t),i=e.length;u<i;u++)o[e[u]]=Q.css(t,e[u],!1,r);return o}return void 0!==n?Q.style(t,e,n):Q.css(t,e)},t,e,arguments.length>1)},show:function(){return A(this,!0)},hide:function(){return A(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){Ct(this)?Q(this).show():Q(this).hide()})}}),Q.Tween=E,E.prototype={constructor:E,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||"swing",this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(Q.cssNumber[n]?"":"px")},cur:function(){var t=E.propHooks[this.prop];return t&&t.get?t.get(this):E.propHooks._default.get(this)},run:function(t){var e,n=E.propHooks[this.prop];return this.options.duration?this.pos=e=Q.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):E.propHooks._default.set(this),this}},E.prototype.init.prototype=E.prototype,E.propHooks={_default:{get:function(t){var e;return null==t.elem[t.prop]||t.elem.style&&null!=t.elem.style[t.prop]?(e=Q.css(t.elem,t.prop,""),e&&"auto"!==e?e:0):t.elem[t.prop]},set:function(t){Q.fx.step[t.prop]?Q.fx.step[t.prop](t):t.elem.style&&(null!=t.elem.style[Q.cssProps[t.prop]]||Q.cssHooks[t.prop])?Q.style(t.elem,t.prop,t.now+t.unit):t.elem[t.prop]=t.now}}},E.propHooks.scrollTop=E.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},Q.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2}},Q.fx=E.prototype.init,Q.fx.step={};var Yt,Gt,Zt=/^(?:toggle|show|hide)$/,Qt=new RegExp("^(?:([+-])=|)("+_t+")([a-z%]*)$","i"),te=/queueHooks$/,ee=[O],ne={"*":[function(t,e){var n=this.createTween(t,e),r=n.cur(),i=Qt.exec(e),o=i&&i[3]||(Q.cssNumber[t]?"":"px"),u=(Q.cssNumber[t]||"px"!==o&&+r)&&Qt.exec(Q.css(n.elem,t)),a=1,c=20;if(u&&u[3]!==o){o=o||u[3],i=i||[],u=+r||1;do a=a||".5",u/=a,Q.style(n.elem,t,u+o);while(a!==(a=n.cur()/r)&&1!==a&&--c)}return i&&(u=n.start=+u||+r||0,n.unit=o,n.end=i[1]?u+(i[1]+1)*i[2]:+i[2]),n}]};Q.Animation=Q.extend(R,{tweener:function(t,e){Q.isFunction(t)?(e=t,t=["*"]):t=t.split(" ");for(var n,r=0,i=t.length;r<i;r++)n=t[r],ne[n]=ne[n]||[],ne[n].unshift(e)},prefilter:function(t,e){e?ee.unshift(t):ee.push(t)}}),Q.speed=function(t,e,n){var r=t&&"object"==typeof t?Q.extend({},t):{complete:n||!n&&e||Q.isFunction(t)&&t,duration:t,easing:n&&e||e&&!Q.isFunction(e)&&e};return r.duration=Q.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in Q.fx.speeds?Q.fx.speeds[r.duration]:Q.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue="fx"),r.old=r.complete,r.complete=function(){Q.isFunction(r.old)&&r.old.call(this),r.queue&&Q.dequeue(this,r.queue)},r},Q.fn.extend({fadeTo:function(t,e,n,r){return this.filter(Ct).css("opacity",0).show().end().animate({opacity:e},t,n,r)},animate:function(t,e,n,r){var i=Q.isEmptyObject(t),o=Q.speed(e,n,r),u=function(){var e=R(this,Q.extend({},t),o);(i||mt.get(this,"finish"))&&e.stop(!0)};return u.finish=u,i||o.queue===!1?this.each(u):this.queue(o.queue,u)},stop:function(t,e,n){var r=function(t){var e=t.stop;delete t.stop,e(n)};return"string"!=typeof t&&(n=e,e=t,t=void 0),e&&t!==!1&&this.queue(t||"fx",[]),this.each(function(){var e=!0,i=null!=t&&t+"queueHooks",o=Q.timers,u=mt.get(this);if(i)u[i]&&u[i].stop&&r(u[i]);else for(i in u)u[i]&&u[i].stop&&te.test(i)&&r(u[i]);for(i=o.length;i--;)o[i].elem!==this||null!=t&&o[i].queue!==t||(o[i].anim.stop(n),e=!1,o.splice(i,1));!e&&n||Q.dequeue(this,t)})},finish:function(t){return t!==!1&&(t=t||"fx"),this.each(function(){var e,n=mt.get(this),r=n[t+"queue"],i=n[t+"queueHooks"],o=Q.timers,u=r?r.length:0;for(n.finish=!0,Q.queue(this,t,[]),i&&i.stop&&i.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));
 for(e=0;e<u;e++)r[e]&&r[e].finish&&r[e].finish.call(this);delete n.finish})}}),Q.each(["toggle","show","hide"],function(t,e){var n=Q.fn[e];Q.fn[e]=function(t,r,i){return null==t||"boolean"==typeof t?n.apply(this,arguments):this.animate(N(e,!0),t,r,i)}}),Q.each({slideDown:N("show"),slideUp:N("hide"),slideToggle:N("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){Q.fn[t]=function(t,n,r){return this.animate(e,t,n,r)}}),Q.timers=[],Q.fx.tick=function(){var t,e=0,n=Q.timers;for(Yt=Q.now();e<n.length;e++)t=n[e],t()||n[e]!==t||n.splice(e--,1);n.length||Q.fx.stop(),Yt=void 0},Q.fx.timer=function(t){Q.timers.push(t),t()?Q.fx.start():Q.timers.pop()},Q.fx.interval=13,Q.fx.start=function(){Gt||(Gt=setInterval(Q.fx.tick,Q.fx.interval))},Q.fx.stop=function(){clearInterval(Gt),Gt=null},Q.fx.speeds={slow:600,fast:200,_default:400},Q.fn.delay=function(t,e){return t=Q.fx?Q.fx.speeds[t]||t:t,e=e||"fx",this.queue(e,function(e,n){var r=setTimeout(e,t);n.stop=function(){clearTimeout(r)}})},function(){var t=G.createElement("input"),e=G.createElement("select"),n=e.appendChild(G.createElement("option"));t.type="checkbox",Y.checkOn=""!==t.value,Y.optSelected=n.selected,e.disabled=!0,Y.optDisabled=!n.disabled,t=G.createElement("input"),t.value="t",t.type="radio",Y.radioValue="t"===t.value}();var re,ie,oe=Q.expr.attrHandle;Q.fn.extend({attr:function(t,e){return vt(this,Q.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){Q.removeAttr(this,t)})}}),Q.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(t&&3!==o&&8!==o&&2!==o)return typeof t.getAttribute===Tt?Q.prop(t,e,n):(1===o&&Q.isXMLDoc(t)||(e=e.toLowerCase(),r=Q.attrHooks[e]||(Q.expr.match.bool.test(e)?ie:re)),void 0===n?r&&"get"in r&&null!==(i=r.get(t,e))?i:(i=Q.find.attr(t,e),null==i?void 0:i):null!==n?r&&"set"in r&&void 0!==(i=r.set(t,n,e))?i:(t.setAttribute(e,n+""),n):void Q.removeAttr(t,e))},removeAttr:function(t,e){var n,r,i=0,o=e&&e.match(ht);if(o&&1===t.nodeType)for(;n=o[i++];)r=Q.propFix[n]||n,Q.expr.match.bool.test(n)&&(t[r]=!1),t.removeAttribute(n)},attrHooks:{type:{set:function(t,e){if(!Y.radioValue&&"radio"===e&&Q.nodeName(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}}}),ie={set:function(t,e,n){return e===!1?Q.removeAttr(t,n):t.setAttribute(n,n),n}},Q.each(Q.expr.match.bool.source.match(/\w+/g),function(t,e){var n=oe[e]||Q.find.attr;oe[e]=function(t,e,r){var i,o;return r||(o=oe[e],oe[e]=i,i=null!=n(t,e,r)?e.toLowerCase():null,oe[e]=o),i}});var ue=/^(?:input|select|textarea|button)$/i;Q.fn.extend({prop:function(t,e){return vt(this,Q.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[Q.propFix[t]||t]})}}),Q.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(t,e,n){var r,i,o,u=t.nodeType;if(t&&3!==u&&8!==u&&2!==u)return o=1!==u||!Q.isXMLDoc(t),o&&(e=Q.propFix[e]||e,i=Q.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){return t.hasAttribute("tabindex")||ue.test(t.nodeName)||t.href?t.tabIndex:-1}}}}),Y.optSelected||(Q.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null}}),Q.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){Q.propFix[this.toLowerCase()]=this});var ae=/[\t\r\n\f]/g;Q.fn.extend({addClass:function(t){var e,n,r,i,o,u,a="string"==typeof t&&t,c=0,s=this.length;if(Q.isFunction(t))return this.each(function(e){Q(this).addClass(t.call(this,e,this.className))});if(a)for(e=(t||"").match(ht)||[];c<s;c++)if(n=this[c],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(ae," "):" ")){for(o=0;i=e[o++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");u=Q.trim(r),n.className!==u&&(n.className=u)}return this},removeClass:function(t){var e,n,r,i,o,u,a=0===arguments.length||"string"==typeof t&&t,c=0,s=this.length;if(Q.isFunction(t))return this.each(function(e){Q(this).removeClass(t.call(this,e,this.className))});if(a)for(e=(t||"").match(ht)||[];c<s;c++)if(n=this[c],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(ae," "):"")){for(o=0;i=e[o++];)for(;r.indexOf(" "+i+" ")>=0;)r=r.replace(" "+i+" "," ");u=t?Q.trim(r):"",n.className!==u&&(n.className=u)}return this},toggleClass:function(t,e){var n=typeof t;return"boolean"==typeof e&&"string"===n?e?this.addClass(t):this.removeClass(t):Q.isFunction(t)?this.each(function(n){Q(this).toggleClass(t.call(this,n,this.className,e),e)}):this.each(function(){if("string"===n)for(var e,r=0,i=Q(this),o=t.match(ht)||[];e=o[r++];)i.hasClass(e)?i.removeClass(e):i.addClass(e);else n!==Tt&&"boolean"!==n||(this.className&&mt.set(this,"__className__",this.className),this.className=this.className||t===!1?"":mt.get(this,"__className__")||"")})},hasClass:function(t){for(var e=" "+t+" ",n=0,r=this.length;n<r;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(ae," ").indexOf(e)>=0)return!0;return!1}});var ce=/\r/g;Q.fn.extend({val:function(t){var e,n,r,i=this[0];{if(arguments.length)return r=Q.isFunction(t),this.each(function(n){var i;1===this.nodeType&&(i=r?t.call(this,n,Q(this).val()):t,null==i?i="":"number"==typeof i?i+="":Q.isArray(i)&&(i=Q.map(i,function(t){return null==t?"":t+""})),e=Q.valHooks[this.type]||Q.valHooks[this.nodeName.toLowerCase()],e&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))});if(i)return e=Q.valHooks[i.type]||Q.valHooks[i.nodeName.toLowerCase()],e&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(ce,""):null==n?"":n)}}}),Q.extend({valHooks:{option:{get:function(t){var e=Q.find.attr(t,"value");return null!=e?e:Q.trim(Q.text(t))}},select:{get:function(t){for(var e,n,r=t.options,i=t.selectedIndex,o="select-one"===t.type||i<0,u=o?null:[],a=o?i+1:r.length,c=i<0?a:o?i:0;c<a;c++)if(n=r[c],(n.selected||c===i)&&(Y.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!Q.nodeName(n.parentNode,"optgroup"))){if(e=Q(n).val(),o)return e;u.push(e)}return u},set:function(t,e){for(var n,r,i=t.options,o=Q.makeArray(e),u=i.length;u--;)r=i[u],(r.selected=Q.inArray(r.value,o)>=0)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),Q.each(["radio","checkbox"],function(){Q.valHooks[this]={set:function(t,e){if(Q.isArray(e))return t.checked=Q.inArray(Q(t).val(),e)>=0}},Y.checkOn||(Q.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}),Q.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(t,e){Q.fn[e]=function(t,n){return arguments.length>0?this.on(e,null,t,n):this.trigger(e)}}),Q.fn.extend({hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)},bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,r){return this.on(e,t,n,r)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)}});var se=Q.now(),le=/\?/;Q.parseJSON=function(t){return JSON.parse(t+"")},Q.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{n=new DOMParser,e=n.parseFromString(t,"text/xml")}catch(r){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||Q.error("Invalid XML: "+t),e};var fe=/#.*$/,pe=/([?&])_=[^&]*/,he=/^(.*?):[ \t]*([^\r\n]*)$/gm,de=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ge=/^(?:GET|HEAD)$/,ve=/^\/\//,me=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,ye={},be={},xe="*/".concat("*"),_e=t.location.href,we=me.exec(_e.toLowerCase())||[];Q.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:_e,type:"GET",isLocal:de.test(we[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":xe,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":Q.parseJSON,"text xml":Q.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?P(P(t,Q.ajaxSettings),e):P(Q.ajaxSettings,t)},ajaxPrefilter:q(ye),ajaxTransport:q(be),ajax:function(t,e){function n(t,e,n,u){var c,l,m,y,x,w=e;2!==b&&(b=2,a&&clearTimeout(a),r=void 0,o=u||"",_.readyState=t>0?4:0,c=t>=200&&t<300||304===t,n&&(y=I(f,_,n)),y=W(f,y,_,c),c?(f.ifModified&&(x=_.getResponseHeader("Last-Modified"),x&&(Q.lastModified[i]=x),x=_.getResponseHeader("etag"),x&&(Q.etag[i]=x)),204===t||"HEAD"===f.type?w="nocontent":304===t?w="notmodified":(w=y.state,l=y.data,m=y.error,c=!m)):(m=w,!t&&w||(w="error",t<0&&(t=0))),_.status=t,_.statusText=(e||w)+"",c?d.resolveWith(p,[l,w,_]):d.rejectWith(p,[_,w,m]),_.statusCode(v),v=void 0,s&&h.trigger(c?"ajaxSuccess":"ajaxError",[_,f,c?l:m]),g.fireWith(p,[_,w]),s&&(h.trigger("ajaxComplete",[_,f]),--Q.active||Q.event.trigger("ajaxStop")))}"object"==typeof t&&(e=t,t=void 0),e=e||{};var r,i,o,u,a,c,s,l,f=Q.ajaxSetup({},e),p=f.context||f,h=f.context&&(p.nodeType||p.jquery)?Q(p):Q.event,d=Q.Deferred(),g=Q.Callbacks("once memory"),v=f.statusCode||{},m={},y={},b=0,x="canceled",_={readyState:0,getResponseHeader:function(t){var e;if(2===b){if(!u)for(u={};e=he.exec(o);)u[e[1].toLowerCase()]=e[2];e=u[t.toLowerCase()]}return null==e?null:e},getAllResponseHeaders:function(){return 2===b?o:null},setRequestHeader:function(t,e){var n=t.toLowerCase();return b||(t=y[n]=y[n]||t,m[t]=e),this},overrideMimeType:function(t){return b||(f.mimeType=t),this},statusCode:function(t){var e;if(t)if(b<2)for(e in t)v[e]=[v[e],t[e]];else _.always(t[_.status]);return this},abort:function(t){var e=t||x;return r&&r.abort(e),n(0,e),this}};if(d.promise(_).complete=g.add,_.success=_.done,_.error=_.fail,f.url=((t||f.url||_e)+"").replace(fe,"").replace(ve,we[1]+"//"),f.type=e.method||e.type||f.method||f.type,f.dataTypes=Q.trim(f.dataType||"*").toLowerCase().match(ht)||[""],null==f.crossDomain&&(c=me.exec(f.url.toLowerCase()),f.crossDomain=!(!c||c[1]===we[1]&&c[2]===we[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(we[3]||("http:"===we[1]?"80":"443")))),f.data&&f.processData&&"string"!=typeof f.data&&(f.data=Q.param(f.data,f.traditional)),H(ye,f,e,_),2===b)return _;s=Q.event&&f.global,s&&0===Q.active++&&Q.event.trigger("ajaxStart"),f.type=f.type.toUpperCase(),f.hasContent=!ge.test(f.type),i=f.url,f.hasContent||(f.data&&(i=f.url+=(le.test(i)?"&":"?")+f.data,delete f.data),f.cache===!1&&(f.url=pe.test(i)?i.replace(pe,"$1_="+se++):i+(le.test(i)?"&":"?")+"_="+se++)),f.ifModified&&(Q.lastModified[i]&&_.setRequestHeader("If-Modified-Since",Q.lastModified[i]),Q.etag[i]&&_.setRequestHeader("If-None-Match",Q.etag[i])),(f.data&&f.hasContent&&f.contentType!==!1||e.contentType)&&_.setRequestHeader("Content-Type",f.contentType),_.setRequestHeader("Accept",f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+("*"!==f.dataTypes[0]?", "+xe+"; q=0.01":""):f.accepts["*"]);for(l in f.headers)_.setRequestHeader(l,f.headers[l]);if(f.beforeSend&&(f.beforeSend.call(p,_,f)===!1||2===b))return _.abort();x="abort";for(l in{success:1,error:1,complete:1})_[l](f[l]);if(r=H(be,f,e,_)){_.readyState=1,s&&h.trigger("ajaxSend",[_,f]),f.async&&f.timeout>0&&(a=setTimeout(function(){_.abort("timeout")},f.timeout));try{b=1,r.send(m,n)}catch(w){if(!(b<2))throw w;n(-1,w)}}else n(-1,"No Transport");return _},getJSON:function(t,e,n){return Q.get(t,e,n,"json")},getScript:function(t,e){return Q.get(t,void 0,e,"script")}}),Q.each(["get","post"],function(t,e){Q[e]=function(t,n,r,i){return Q.isFunction(n)&&(i=i||r,r=n,n=void 0),Q.ajax({url:t,type:e,dataType:i,data:n,success:r})}}),Q._evalUrl=function(t){return Q.ajax({url:t,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},Q.fn.extend({wrapAll:function(t){var e;return Q.isFunction(t)?this.each(function(e){Q(this).wrapAll(t.call(this,e))}):(this[0]&&(e=Q(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this)},wrapInner:function(t){return Q.isFunction(t)?this.each(function(e){Q(this).wrapInner(t.call(this,e))}):this.each(function(){var e=Q(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)})},wrap:function(t){var e=Q.isFunction(t);return this.each(function(n){Q(this).wrapAll(e?t.call(this,n):t)})},unwrap:function(){return this.parent().each(function(){Q.nodeName(this,"body")||Q(this).replaceWith(this.childNodes)}).end()}}),Q.expr.filters.hidden=function(t){return t.offsetWidth<=0&&t.offsetHeight<=0},Q.expr.filters.visible=function(t){return!Q.expr.filters.hidden(t)};var Ce=/%20/g,ke=/\[\]$/,Te=/\r?\n/g,je=/^(?:submit|button|image|reset|file)$/i,Ae=/^(?:input|select|textarea|keygen)/i;Q.param=function(t,e){var n,r=[],i=function(t,e){e=Q.isFunction(e)?e():null==e?"":e,r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(e)};if(void 0===e&&(e=Q.ajaxSettings&&Q.ajaxSettings.traditional),Q.isArray(t)||t.jquery&&!Q.isPlainObject(t))Q.each(t,function(){i(this.name,this.value)});else for(n in t)F(n,t[n],e,i);return r.join("&").replace(Ce,"+")},Q.fn.extend({serialize:function(){return Q.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=Q.prop(this,"elements");return t?Q.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!Q(this).is(":disabled")&&Ae.test(this.nodeName)&&!je.test(t)&&(this.checked||!kt.test(t))}).map(function(t,e){var n=Q(this).val();return null==n?null:Q.isArray(n)?Q.map(n,function(t){return{name:e.name,value:t.replace(Te,"\r\n")}}):{name:e.name,value:n.replace(Te,"\r\n")}}).get()}}),Q.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(t){}};var Ee=0,Se={},Ne={0:200,1223:204},De=Q.ajaxSettings.xhr();t.attachEvent&&t.attachEvent("onunload",function(){for(var t in Se)Se[t]()}),Y.cors=!!De&&"withCredentials"in De,Y.ajax=De=!!De,Q.ajaxTransport(function(t){var e;if(Y.cors||De&&!t.crossDomain)return{send:function(n,r){var i,o=t.xhr(),u=++Ee;if(o.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(i in t.xhrFields)o[i]=t.xhrFields[i];t.mimeType&&o.overrideMimeType&&o.overrideMimeType(t.mimeType),t.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)o.setRequestHeader(i,n[i]);e=function(t){return function(){e&&(delete Se[u],e=o.onload=o.onerror=null,"abort"===t?o.abort():"error"===t?r(o.status,o.statusText):r(Ne[o.status]||o.status,o.statusText,"string"==typeof o.responseText?{text:o.responseText}:void 0,o.getAllResponseHeaders()))}},o.onload=e(),o.onerror=e("error"),e=Se[u]=e("abort");try{o.send(t.hasContent&&t.data||null)}catch(a){if(e)throw a}},abort:function(){e&&e()}}}),Q.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(t){return Q.globalEval(t),t}}}),Q.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),Q.ajaxTransport("script",function(t){if(t.crossDomain){var e,n;return{send:function(r,i){e=Q("<script>").prop({async:!0,charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&i("error"===t.type?404:200,t.type)}),G.head.appendChild(e[0])},abort:function(){n&&n()}}}});var Oe=[],Le=/(=)\?(?=&|$)|\?\?/;Q.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Oe.pop()||Q.expando+"_"+se++;return this[t]=!0,t}}),Q.ajaxPrefilter("json jsonp",function(e,n,r){var i,o,u,a=e.jsonp!==!1&&(Le.test(e.url)?"url":"string"==typeof e.data&&!(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Le.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return i=e.jsonpCallback=Q.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Le,"$1"+i):e.jsonp!==!1&&(e.url+=(le.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return u||Q.error(i+" was not called"),u[0]},e.dataTypes[0]="json",o=t[i],t[i]=function(){u=arguments},r.always(function(){t[i]=o,e[i]&&(e.jsonpCallback=n.jsonpCallback,Oe.push(i)),u&&Q.isFunction(o)&&o(u[0]),u=o=void 0}),"script"}),Q.parseHTML=function(t,e,n){if(!t||"string"!=typeof t)return null;"boolean"==typeof e&&(n=e,e=!1),e=e||G;var r=ut.exec(t),i=!n&&[];return r?[e.createElement(r[1])]:(r=Q.buildFragment([t],e,i),i&&i.length&&Q(i).remove(),Q.merge([],r.childNodes))};var Re=Q.fn.load;Q.fn.load=function(t,e,n){if("string"!=typeof t&&Re)return Re.apply(this,arguments);var r,i,o,u=this,a=t.indexOf(" ");return a>=0&&(r=Q.trim(t.slice(a)),t=t.slice(0,a)),Q.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(i="POST"),u.length>0&&Q.ajax({url:t,type:i,dataType:"html",data:e}).done(function(t){o=arguments,u.html(r?Q("<div>").append(Q.parseHTML(t)).find(r):t)}).complete(n&&function(t,e){u.each(n,o||[t.responseText,e,t])}),this},Q.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){Q.fn[e]=function(t){return this.on(e,t)}}),Q.expr.filters.animated=function(t){return Q.grep(Q.timers,function(e){return t===e.elem}).length};var qe=t.document.documentElement;Q.offset={setOffset:function(t,e,n){var r,i,o,u,a,c,s,l=Q.css(t,"position"),f=Q(t),p={};"static"===l&&(t.style.position="relative"),a=f.offset(),o=Q.css(t,"top"),c=Q.css(t,"left"),s=("absolute"===l||"fixed"===l)&&(o+c).indexOf("auto")>-1,s?(r=f.position(),u=r.top,i=r.left):(u=parseFloat(o)||0,i=parseFloat(c)||0),Q.isFunction(e)&&(e=e.call(t,n,a)),null!=e.top&&(p.top=e.top-a.top+u),null!=e.left&&(p.left=e.left-a.left+i),"using"in e?e.using.call(t,p):f.css(p)}},Q.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){Q.offset.setOffset(this,t,e)});var e,n,r=this[0],i={top:0,left:0},o=r&&r.ownerDocument;if(o)return e=o.documentElement,Q.contains(e,r)?(typeof r.getBoundingClientRect!==Tt&&(i=r.getBoundingClientRect()),n=M(o),{top:i.top+n.pageYOffset-e.clientTop,left:i.left+n.pageXOffset-e.clientLeft}):i},position:function(){if(this[0]){var t,e,n=this[0],r={top:0,left:0};return"fixed"===Q.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),Q.nodeName(t[0],"html")||(r=t.offset()),r.top+=Q.css(t[0],"borderTopWidth",!0),r.left+=Q.css(t[0],"borderLeftWidth",!0)),{top:e.top-r.top-Q.css(n,"marginTop",!0),left:e.left-r.left-Q.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||qe;t&&!Q.nodeName(t,"html")&&"static"===Q.css(t,"position");)t=t.offsetParent;return t||qe})}}),Q.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r="pageYOffset"===n;Q.fn[e]=function(i){return vt(this,function(e,i,o){var u=M(e);return void 0===o?u?u[n]:e[i]:void(u?u.scrollTo(r?t.pageXOffset:o,r?o:t.pageYOffset):e[i]=o)},e,i,arguments.length,null)}}),Q.each(["top","left"],function(t,e){Q.cssHooks[e]=w(Y.pixelPosition,function(t,n){if(n)return n=_(t,e),$t.test(n)?Q(t).position()[e]+"px":n})}),Q.each({Height:"height",Width:"width"},function(t,e){Q.each({padding:"inner"+t,content:e,"":"outer"+t},function(n,r){Q.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),u=n||(r===!0||i===!0?"margin":"border");return vt(this,function(e,n,r){var i;return Q.isWindow(e)?e.document.documentElement["client"+t]:9===e.nodeType?(i=e.documentElement,Math.max(e.body["scroll"+t],i["scroll"+t],e.body["offset"+t],i["offset"+t],i["client"+t])):void 0===r?Q.css(e,n,u):Q.style(e,n,r,u)},e,o?r:void 0,o,null)}})}),Q.fn.size=function(){return this.length},Q.fn.andSelf=Q.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return Q});var He=t.jQuery,Pe=t.$;return Q.noConflict=function(e){return t.$===Q&&(t.$=Pe),e&&t.jQuery===Q&&(t.jQuery=He),Q},typeof e===Tt&&(t.jQuery=t.$=Q),Q}),function(){function t(t,e){return t.set(e[0],e[1]),t}function e(t,e){return t.add(e),t}function n(t,e,n){var r=n.length;switch(r){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function r(t,e,n,r){for(var i=-1,o=t.length;++i<o;){var u=t[i];e(r,u,n(u),t)}return r}function i(t,e){for(var n=-1,r=t.length,i=-1,o=e.length,u=Array(r+o);++n<r;)u[n]=t[n];for(;++i<o;)u[n++]=e[i];return u}function o(t,e){for(var n=-1,r=t.length;++n<r&&e(t[n],n,t)!==!1;);return t}function u(t,e){for(var n=t.length;n--&&e(t[n],n,t)!==!1;);return t}function a(t,e){for(var n=-1,r=t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function c(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var u=t[n];e(u,n,t)&&(o[i++]=u)}return o}function s(t,e){return!!t.length&&y(t,e,0)>-1}function l(t,e,n){for(var r=-1,i=t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function f(t,e){for(var n=-1,r=t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function p(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function h(t,e,n,r){var i=-1,o=t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function d(t,e,n,r){var i=t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function g(t,e){for(var n=-1,r=t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function v(t,e,n,r){var i;return n(t,function(t,n,o){if(e(t,n,o))return i=r?n:t,!1}),i}function m(t,e,n){for(var r=t.length,i=n?r:-1;n?i--:++i<r;)if(e(t[i],i,t))return i;return-1}function y(t,e,n){if(e!==e)return q(t,n);for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function b(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function x(t,e){var n=t?t.length:0;return n?C(t,e)/n:bt}function _(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function w(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function C(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==J&&(n=n===J?o:n+o)}return n}function k(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function T(t,e){return f(e,function(e){return[e,t[e]]})}function j(t){return function(e){return t(e)}}function A(t,e){return f(e,function(e){return t[e]})}function E(t,e){for(var n=-1,r=t.length;++n<r&&y(e,t[n],0)>-1;);return n}function S(t,e){for(var n=t.length;n--&&y(e,t[n],0)>-1;);return n}function N(t){return t&&t.Object===Object?t:null}function D(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&r++;return r}function O(t){return wn[t]}function L(t){return Cn[t]}function R(t){return"\\"+jn[t]}function q(t,e,n){for(var r=t.length,i=e+(n?0:-1);n?i--:++i<r;){var o=t[i];if(o!==o)return i}return-1}function H(t){var e=!1;if(null!=t&&"function"!=typeof t.toString)try{e=!!(t+"")}catch(n){}return e}function P(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function I(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function W(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var u=t[n];u!==e&&u!==Y||(t[n]=Y,o[i++]=n)}return o}function F(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function M(t){if(!t||!vn.test(t))return t.length;for(var e=dn.lastIndex=0;dn.test(t);)e++;return e}function $(t){return t.match(dn)}function B(t){return kn[t]}function z(N){function Ee(t){if(sa(t)&&!tf(t)&&!(t instanceof De)){if(t instanceof Ne)return t;if(ds.call(t,"__wrapped__"))return eo(t)}return new Ne(t)}function Se(){}function Ne(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=J}function De(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=xt,this.__views__=[]}function Oe(){var t=new De(this.__wrapped__);return t.__actions__=Yr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Yr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Yr(this.__views__),t}function Le(){if(this.__filtered__){var t=new De(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function Re(){var t=this.__wrapped__.value(),e=this.__dir__,n=tf(t),r=e<0,i=n?t.length:0,o=Li(0,i,this.__views__),u=o.start,a=o.end,c=a-u,s=r?a:u-1,l=this.__iteratees__,f=l.length,p=0,h=Ws(c,this.__takeCount__);if(!n||i<K||i==c&&h==c)return Dr(t,this.__actions__);var d=[];t:for(;c--&&p<h;){s+=e;for(var g=-1,v=t[s];++g<f;){var m=l[g],y=m.iteratee,b=m.type,x=y(v);if(b==dt)v=x;else if(!x){if(b==ht)continue t;break t}}d[p++]=v}return d}function qe(){}function He(t,e){return Ie(t,e)&&delete t[e]}function Pe(t,e){if(Ys){var n=t[e];return n===V?J:n}return ds.call(t,e)?t[e]:J}function Ie(t,e){return Ys?t[e]!==J:ds.call(t,e)}function We(t,e,n){t[e]=Ys&&n===J?V:n}function Fe(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Me(){this.__data__={hash:new qe,map:Us?new Us:[],string:new qe}}function $e(t){var e=this.__data__;return zi(t)?He("string"==typeof t?e.string:e.hash,t):Us?e.map["delete"](t):en(e.map,t)}function Be(t){var e=this.__data__;return zi(t)?Pe("string"==typeof t?e.string:e.hash,t):Us?e.map.get(t):nn(e.map,t)}function ze(t){var e=this.__data__;return zi(t)?Ie("string"==typeof t?e.string:e.hash,t):Us?e.map.has(t):rn(e.map,t)}function Je(t,e){var n=this.__data__;return zi(t)?We("string"==typeof t?n.string:n.hash,t,e):Us?n.map.set(t,e):un(n.map,t,e),this}function Ue(t){var e=-1,n=t?t.length:0;for(this.__data__=new Fe;++e<n;)this.push(t[e])}function Ke(t,e){var n=t.__data__;if(zi(e)){var r=n.__data__,i="string"==typeof e?r.string:r.hash;return i[e]===V}return n.has(e)}function Xe(t){var e=this.__data__;if(zi(t)){var n=e.__data__,r="string"==typeof t?n.string:n.hash;r[t]=V}else e.set(t,V)}function Ve(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ye(){this.__data__={array:[],map:null}}function Ge(t){var e=this.__data__,n=e.array;return n?en(n,t):e.map["delete"](t)}function Ze(t){var e=this.__data__,n=e.array;return n?nn(n,t):e.map.get(t)}function Qe(t){var e=this.__data__,n=e.array;return n?rn(n,t):e.map.has(t)}function tn(t,e){var n=this.__data__,r=n.array;r&&(r.length<K-1?un(r,t,e):(n.array=null,n.map=new Fe(r)));var i=n.map;return i&&i.set(t,e),this}function en(t,e){var n=on(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():Ds.call(t,n,1),!0}function nn(t,e){var n=on(t,e);return n<0?J:t[n][1]}function rn(t,e){return on(t,e)>-1}function on(t,e){for(var n=t.length;n--;)if(Uu(t[n][0],e))return n;return-1}function un(t,e,n){var r=on(t,e);r<0?t.push([e,n]):t[r][1]=n}function an(t,e,n,r){return t===J||Uu(t,fs[n])&&!ds.call(r,n)?e:t}function cn(t,e,n){(n===J||Uu(t[e],n))&&("number"!=typeof e||n!==J||e in t)||(t[e]=n)}function sn(t,e,n){var r=t[e];ds.call(t,e)&&Uu(r,n)&&(n!==J||e in t)||(t[e]=n)}function ln(t,e,n,r){return cl(t,function(t,i,o){e(r,t,n(t),o)}),r}function fn(t,e){return t&&Gr(e,Ka(e),t)}function dn(t,e){for(var n=-1,r=null==t,i=e.length,o=Array(i);++n<i;)o[n]=r?J:za(t,e[n]);return o}function wn(t,e,n){return t===t&&(n!==J&&(t=t<=n?t:n),e!==J&&(t=t>=e?t:e)),t}function Cn(t,e,n,r,i,u,a){var c;if(r&&(c=u?r(t,i,u,a):r(t)),c!==J)return c;if(!ca(t))return t;var s=tf(t);if(s){if(c=qi(t),!e)return Yr(t,c)}else{var l=Oi(t),f=l==Et||l==St;if(ef(t))return Ir(t,e);if(l==Ot||l==Ct||f&&!u){if(H(t))return u?t:{};if(c=Hi(f?{}:t),!e)return Zr(t,fn(c,t))}else{if(!_n[l])return u?t:{};c=Pi(t,l,Cn,e)}}a||(a=new Ve);var p=a.get(t);if(p)return p;if(a.set(t,c),!s)var h=n?Ci(t):Ka(t);return o(h||t,function(i,o){h&&(o=i,i=t[o]),sn(c,o,Cn(i,e,n,r,o,t,a))}),c}function kn(t){var e=Ka(t),n=e.length;return function(r){if(null==r)return!n;for(var i=n;i--;){var o=e[i],u=t[o],a=r[o];if(a===J&&!(o in Object(r))||!u(a))return!1}return!0}}function Tn(t){return ca(t)?Es(t):{}}function jn(t,e,n){if("function"!=typeof t)throw new ss(X);return Ns(function(){t.apply(J,n)},e)}function Sn(t,e,n,r){var i=-1,o=s,u=!0,a=t.length,c=[],p=e.length;if(!a)return c;n&&(e=f(e,j(n))),r?(o=l,u=!1):e.length>=K&&(o=Ke,u=!1,e=new Ue(e));t:for(;++i<a;){var h=t[i],d=n?n(h):h;if(h=r||0!==h?h:0,u&&d===d){for(var g=p;g--;)if(e[g]===d)continue t;c.push(h)}else o(e,d,r)||c.push(h)}return c}function Nn(t,e){var n=!0;return cl(t,function(t,r,i){return n=!!e(t,r,i)}),n}function On(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],u=e(o);if(null!=u&&(a===J?u===u&&!Ca(u):n(u,a)))var a=u,c=o}return c}function Ln(t,e,n,r){var i=t.length;for(n=Sa(n),n<0&&(n=-n>i?0:i+n),r=r===J||r>i?i:Sa(r),r<0&&(r+=i),r=n>r?0:Na(r);n<r;)t[n++]=e;return t}function Rn(t,e){var n=[];return cl(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function qn(t,e,n,r,i){var o=-1,u=t.length;for(n||(n=Wi),i||(i=[]);++o<u;){var a=t[o];e>0&&n(a)?e>1?qn(a,e-1,n,r,i):p(i,a):r||(i[i.length]=a)}return i}function In(t,e){return t&&ll(t,e,Ka)}function Wn(t,e){return t&&fl(t,e,Ka)}function Fn(t,e){return c(e,function(e){return oa(t[e])})}function Mn(t,e){e=Bi(e,t)?[e]:Hr(e);for(var n=0,r=e.length;null!=t&&n<r;)t=t[Qi(e[n++])];return n&&n==r?t:J}function $n(t,e,n){var r=e(t);return tf(t)?r:p(r,n(t))}function Bn(t,e){return t>e}function zn(t,e){return ds.call(t,e)||"object"==typeof t&&e in t&&null===Ni(t)}function Jn(t,e){return e in Object(t)}function Un(t,e,n){return t>=Ws(e,n)&&t<Is(e,n)}function Kn(t,e,n){for(var r=n?l:s,i=t[0].length,o=t.length,u=o,a=Array(o),c=1/0,p=[];u--;){var h=t[u];u&&e&&(h=f(h,j(e))),c=Ws(h.length,c),a[u]=!n&&(e||i>=120&&h.length>=120)?new Ue(u&&h):J}h=t[0];var d=-1,g=a[0];t:for(;++d<i&&p.length<c;){var v=h[d],m=e?e(v):v;if(v=n||0!==v?v:0,!(g?Ke(g,m):r(p,m,n))){for(u=o;--u;){var y=a[u];if(!(y?Ke(y,m):r(t[u],m,n)))continue t}g&&g.push(m),p.push(v)}}return p}function Xn(t,e,n,r){return In(t,function(t,i,o){e(r,n(t),i,o)}),r}function Vn(t,e,r){Bi(e,t)||(e=Hr(e),t=Gi(t,e),e=_o(e));var i=null==t?t:t[Qi(e)];return null==i?J:n(i,t,r)}function Yn(t,e,n,r,i){return t===e||(null==t||null==e||!ca(t)&&!sa(e)?t!==t&&e!==e:Gn(t,e,Yn,n,r,i))}function Gn(t,e,n,r,i,o){var u=tf(t),a=tf(e),c=kt,s=kt;u||(c=Oi(t),c=c==Ct?Ot:c),a||(s=Oi(e),s=s==Ct?Ot:s);var l=c==Ot&&!H(t),f=s==Ot&&!H(e),p=c==s;if(p&&!l)return o||(o=new Ve),u||ka(t)?xi(t,e,n,r,i,o):_i(t,e,c,n,r,i,o);if(!(i&ct)){var h=l&&ds.call(t,"__wrapped__"),d=f&&ds.call(e,"__wrapped__");if(h||d){var g=h?t.value():t,v=d?e.value():e;return o||(o=new Ve),n(g,v,r,i,o)}}return!!p&&(o||(o=new Ve),wi(t,e,n,r,i,o))}function Zn(t,e,n,r){var i=n.length,o=i,u=!r;if(null==t)return!o;for(t=Object(t);i--;){var a=n[i];if(u&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++i<o;){a=n[i];var c=a[0],s=t[c],l=a[1];if(u&&a[2]){if(s===J&&!(c in t))return!1}else{var f=new Ve;if(r)var p=r(s,l,c,t,e,f);if(!(p===J?Yn(l,s,r,at|ct,f):p))return!1}}return!0}function Qn(t){return"function"==typeof t?t:null==t?Ic:"object"==typeof t?tf(t)?or(t[0],t[1]):ir(t):Uc(t)}function tr(t){return Ps(Object(t))}function er(t){t=null==t?t:Object(t);var e=[];for(var n in t)e.push(n);return e}function nr(t,e){return t<e}function rr(t,e){var n=-1,r=Vu(t)?Array(t.length):[];return cl(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function ir(t){var e=Ai(t);return 1==e.length&&e[0][2]?Xi(e[0][0],e[0][1]):function(n){return n===t||Zn(n,t,e)}}function or(t,e){return Bi(t)&&Ki(e)?Xi(Qi(t),e):function(n){var r=za(n,t);return r===J&&r===e?Ua(n,t):Yn(e,r,J,at|ct)}}function ur(t,e,n,r,i){if(t!==e){if(!tf(e)&&!ka(e))var u=Xa(e);o(u||e,function(o,a){if(u&&(a=o,o=e[a]),ca(o))i||(i=new Ve),ar(t,e,a,n,ur,r,i);else{var c=r?r(t[a],o,a+"",t,e,i):J;c===J&&(c=o),cn(t,a,c)}})}}function ar(t,e,n,r,i,o,u){var a=t[n],c=e[n],s=u.get(c);if(s)return void cn(t,n,s);var l=o?o(a,c,n+"",t,e,u):J,f=l===J;f&&(l=c,tf(c)||ka(c)?tf(a)?l=a:Yu(a)?l=Yr(a):(f=!1,l=Cn(c,!0)):ya(c)||Ku(c)?Ku(a)?l=Oa(a):!ca(a)||r&&oa(a)?(f=!1,l=Cn(c,!0)):l=a:f=!1),u.set(c,l),f&&i(l,c,r,o,u),u["delete"](c),cn(t,n,l)}function cr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Mi(e,n)?t[e]:J}function sr(t,e,n){var r=-1;e=f(e.length?e:[Ic],j(ji()));
diff --git a/xos/core/xoslib/xos_dump.sql b/xos/core/xoslib/xos_dump.sql
index 02caae5..402afb1 100644
--- a/xos/core/xoslib/xos_dump.sql
+++ b/xos/core/xoslib/xos_dump.sql
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 --
 -- PostgreSQL database dump
 --
diff --git a/xos/core/xoslib/xos_dump_mysql.sql b/xos/core/xoslib/xos_dump_mysql.sql
index 5b0b412..d223da5 100644
--- a/xos/core/xoslib/xos_dump_mysql.sql
+++ b/xos/core/xoslib/xos_dump_mysql.sql
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # Converted with pg2mysql-1.9
 # Converted on Fri, 16 Oct 2015 05:12:46 -0400
 # Lightbox Technologies Inc. http://www.lightbox.ca
diff --git a/xos/coreapi/apihelper.py b/xos/coreapi/apihelper.py
index 5d21c74..14be3f4 100644
--- a/xos/coreapi/apihelper.py
+++ b/xos/coreapi/apihelper.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import base64
 import datetime
 import inspect
diff --git a/xos/coreapi/core_main.py b/xos/coreapi/core_main.py
index 93e5559..ad951f8 100644
--- a/xos/coreapi/core_main.py
+++ b/xos/coreapi/core_main.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 import time
diff --git a/xos/coreapi/env.sh b/xos/coreapi/env.sh
index 463367b..daa0b7a 100644
--- a/xos/coreapi/env.sh
+++ b/xos/coreapi/env.sh
@@ -1,2 +1,19 @@
+#!/usr/bin/env bash
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 export XOSGRPC_BASE=$PWD
 export PYTHONPATH=$PYTHONPATH:$XOSGRPC_BASE:$XOSGRPC_BASE/protos/third_party
diff --git a/xos/coreapi/grpc_client.py b/xos/coreapi/grpc_client.py
index f4f1c6c..874b217 100644
--- a/xos/coreapi/grpc_client.py
+++ b/xos/coreapi/grpc_client.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import base64
 import grpc
 import orm
diff --git a/xos/coreapi/grpc_server.py b/xos/coreapi/grpc_server.py
index aacc649..caeb9e6 100644
--- a/xos/coreapi/grpc_server.py
+++ b/xos/coreapi/grpc_server.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #
 # Copyright 2017 the original author or authors.
 #
diff --git a/xos/coreapi/list_test.py b/xos/coreapi/list_test.py
index ddfd482..77fe547 100644
--- a/xos/coreapi/list_test.py
+++ b/xos/coreapi/list_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import grpc_client
 from grpc_client import Empty
 
diff --git a/xos/coreapi/orm.py b/xos/coreapi/orm.py
index 538a278..1ee84b5 100644
--- a/xos/coreapi/orm.py
+++ b/xos/coreapi/orm.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """
 Django-like ORM layer for gRPC
 
diff --git a/xos/coreapi/protos/__init__.py b/xos/coreapi/protos/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/coreapi/protos/__init__.py
+++ b/xos/coreapi/protos/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/coreapi/protos/third_party/__init__.py b/xos/coreapi/protos/third_party/__init__.py
index faf6704..c3ed936 100644
--- a/xos/coreapi/protos/third_party/__init__.py
+++ b/xos/coreapi/protos/third_party/__init__.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #
 # Copyright 2017 the original author or authors.
 #
diff --git a/xos/coreapi/protos/third_party/google/__init__.py b/xos/coreapi/protos/third_party/google/__init__.py
index e69de29..d4e8062 100644
--- a/xos/coreapi/protos/third_party/google/__init__.py
+++ b/xos/coreapi/protos/third_party/google/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/coreapi/protos/third_party/google/api/__init__.py b/xos/coreapi/protos/third_party/google/api/__init__.py
index e69de29..d4e8062 100644
--- a/xos/coreapi/protos/third_party/google/api/__init__.py
+++ b/xos/coreapi/protos/third_party/google/api/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/coreapi/reaper.py b/xos/coreapi/reaper.py
index 3ea9c23..38ecfcf 100644
--- a/xos/coreapi/reaper.py
+++ b/xos/coreapi/reaper.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ Reaper
 
     The reaper implements permanent deletion of soft-deleted objects.
diff --git a/xos/coreapi/start_coreapi.sh b/xos/coreapi/start_coreapi.sh
index 077b76a..580a295 100755
--- a/xos/coreapi/start_coreapi.sh
+++ b/xos/coreapi/start_coreapi.sh
@@ -1,3 +1,20 @@
+#!/usr/bin/env bash
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 cd protos
 make rebuild-protos
 make
diff --git a/xos/coreapi/start_grpc_server.sh b/xos/coreapi/start_grpc_server.sh
index 382be12..cad1f6b 100755
--- a/xos/coreapi/start_grpc_server.sh
+++ b/xos/coreapi/start_grpc_server.sh
@@ -1,3 +1,20 @@
+#!/usr/bin/env bash
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 cd protos
 make rebuild-protos
 make
diff --git a/xos/coreapi/tests/api_user_crud.py b/xos/coreapi/tests/api_user_crud.py
index 2e84f7f..215e643 100644
--- a/xos/coreapi/tests/api_user_crud.py
+++ b/xos/coreapi/tests/api_user_crud.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import sys
 sys.path.append("..")
 
diff --git a/xos/coreapi/tests/cham_slice_crud.sh b/xos/coreapi/tests/cham_slice_crud.sh
index 02c4435..94ad493 100644
--- a/xos/coreapi/tests/cham_slice_crud.sh
+++ b/xos/coreapi/tests/cham_slice_crud.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 source /opt/xos/coreapi/tests/testconfig-chameleon.sh
 
 RESPONSE=`curl -X POST -H "Content-Type: application/json" -d "{\"username\": \"$USERNAME\", \"password\": \"$PASSWORD\"}" http://$HOSTNAME:8080/xosapi/v1/utility/login`
diff --git a/xos/coreapi/tests/orm_user_crud.py b/xos/coreapi/tests/orm_user_crud.py
index 424a39d..f9c6229 100644
--- a/xos/coreapi/tests/orm_user_crud.py
+++ b/xos/coreapi/tests/orm_user_crud.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import sys
 sys.path.append("..")
 
diff --git a/xos/coreapi/tests/run_tests.sh b/xos/coreapi/tests/run_tests.sh
index 4e4b167..12d89b1 100644
--- a/xos/coreapi/tests/run_tests.sh
+++ b/xos/coreapi/tests/run_tests.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /bin/bash
 
 # Helper script for running chameleon tests from inside prod vm
diff --git a/xos/coreapi/tests/testconfig-chameleon.sh b/xos/coreapi/tests/testconfig-chameleon.sh
index 8e35d13..278aa4e 100644
--- a/xos/coreapi/tests/testconfig-chameleon.sh
+++ b/xos/coreapi/tests/testconfig-chameleon.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # enter your hostname and credentials here
 
 HOSTNAME=my_hostname
diff --git a/xos/coreapi/tests/testconfig.py b/xos/coreapi/tests/testconfig.py
index 0b15953..addf729 100644
--- a/xos/coreapi/tests/testconfig.py
+++ b/xos/coreapi/tests/testconfig.py
@@ -1,2 +1,18 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 USERNAME="xosadmin@opencord.org"
 PASSWORD="mypassword"
diff --git a/xos/coreapi/tests/tosca.py b/xos/coreapi/tests/tosca.py
index cc4f6bd..a7cdd5c 100644
--- a/xos/coreapi/tests/tosca.py
+++ b/xos/coreapi/tests/tosca.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import random
 import string
 import sys
diff --git a/xos/coreapi/xos_modeldefs_api.py b/xos/coreapi/xos_modeldefs_api.py
index 8a9d239..fbed321 100644
--- a/xos/coreapi/xos_modeldefs_api.py
+++ b/xos/coreapi/xos_modeldefs_api.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import base64
 import time
 import yaml
diff --git a/xos/coreapi/xos_utility_api.py b/xos/coreapi/xos_utility_api.py
index 46a5964..bd07fea 100644
--- a/xos/coreapi/xos_utility_api.py
+++ b/xos/coreapi/xos_utility_api.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import base64
 import fnmatch
 import os
diff --git a/xos/generate/__init__.py b/xos/generate/__init__.py
index e69de29..d4e8062 100644
--- a/xos/generate/__init__.py
+++ b/xos/generate/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/generate/dependency_walker.py b/xos/generate/dependency_walker.py
index d2f97af..ab50039 100644
--- a/xos/generate/dependency_walker.py
+++ b/xos/generate/dependency_walker.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 # NOTE is this used or replaced by `new_base/dependency_walker_new.py`?
diff --git a/xos/manage.py b/xos/manage.py
index 028eb4f..0378afa 100644
--- a/xos/manage.py
+++ b/xos/manage.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 import os
 import sys
diff --git a/xos/services/__init__.py b/xos/services/__init__.py
index e69de29..d4e8062 100644
--- a/xos/services/__init__.py
+++ b/xos/services/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/services/syndicate_storage/__init__.py b/xos/services/syndicate_storage/__init__.py
index e69de29..d4e8062 100644
--- a/xos/services/syndicate_storage/__init__.py
+++ b/xos/services/syndicate_storage/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/services/syndicate_storage/admin.py b/xos/services/syndicate_storage/admin.py
index afe4de9..e56c9a8 100644
--- a/xos/services/syndicate_storage/admin.py
+++ b/xos/services/syndicate_storage/admin.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.contrib import admin
 
 from services.syndicate_storage.models import *
diff --git a/xos/services/syndicate_storage/migrations/__init__.py b/xos/services/syndicate_storage/migrations/__init__.py
index e69de29..d4e8062 100644
--- a/xos/services/syndicate_storage/migrations/__init__.py
+++ b/xos/services/syndicate_storage/migrations/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/services/syndicate_storage/models.py b/xos/services/syndicate_storage/models.py
index ccaf813..5b90d52 100644
--- a/xos/services/syndicate_storage/models.py
+++ b/xos/services/syndicate_storage/models.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from core.models import User,Site,Service,XOSBase,Slice,SlicePrivilege
 import os
 from django.db import models
diff --git a/xos/services/syndicate_storage/templates/syndicateadmin.html b/xos/services/syndicate_storage/templates/syndicateadmin.html
index 0c46206..de8fb4e 100644
--- a/xos/services/syndicate_storage/templates/syndicateadmin.html
+++ b/xos/services/syndicate_storage/templates/syndicateadmin.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class = "left-nav">
 <ul>
 {% for admin in registered_admins %}
diff --git a/xos/synchronizers/__init__.py b/xos/synchronizers/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/synchronizers/__init__.py
+++ b/xos/synchronizers/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/synchronizers/model_policy.py b/xos/synchronizers/model_policy.py
index 6455111..c324340 100644
--- a/xos/synchronizers/model_policy.py
+++ b/xos/synchronizers/model_policy.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from core.models import *
 from datetime import datetime
 from django.db import reset_queries
diff --git a/xos/synchronizers/new_base/SyncInstanceUsingAnsible.py b/xos/synchronizers/new_base/SyncInstanceUsingAnsible.py
index c865f6f..71c3400 100644
--- a/xos/synchronizers/new_base/SyncInstanceUsingAnsible.py
+++ b/xos/synchronizers/new_base/SyncInstanceUsingAnsible.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import hashlib
 import os
 import socket
diff --git a/xos/synchronizers/new_base/__init__.py b/xos/synchronizers/new_base/__init__.py
index e69de29..d4e8062 100644
--- a/xos/synchronizers/new_base/__init__.py
+++ b/xos/synchronizers/new_base/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/synchronizers/new_base/ansible_helper.py b/xos/synchronizers/new_base/ansible_helper.py
index 454b882..517c15e 100644
--- a/xos/synchronizers/new_base/ansible_helper.py
+++ b/xos/synchronizers/new_base/ansible_helper.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 import jinja2
diff --git a/xos/synchronizers/new_base/ansible_main.py b/xos/synchronizers/new_base/ansible_main.py
index 00def66..c2b5097 100644
--- a/xos/synchronizers/new_base/ansible_main.py
+++ b/xos/synchronizers/new_base/ansible_main.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import pickle
 import sys
diff --git a/xos/synchronizers/new_base/ansible_runner.py b/xos/synchronizers/new_base/ansible_runner.py
index a00fca8..f9cf70c 100644
--- a/xos/synchronizers/new_base/ansible_runner.py
+++ b/xos/synchronizers/new_base/ansible_runner.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 import os
diff --git a/xos/synchronizers/new_base/apiaccessor.py b/xos/synchronizers/new_base/apiaccessor.py
index 9f40162..b1cf77b 100644
--- a/xos/synchronizers/new_base/apiaccessor.py
+++ b/xos/synchronizers/new_base/apiaccessor.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from modelaccessor import ModelAccessor
 import pytz
 import datetime
diff --git a/xos/synchronizers/new_base/backend.py b/xos/synchronizers/new_base/backend.py
index 1ef2ec6..3d3255a 100644
--- a/xos/synchronizers/new_base/backend.py
+++ b/xos/synchronizers/new_base/backend.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import inspect
 import imp
diff --git a/xos/synchronizers/new_base/backend_modelpolicy.py b/xos/synchronizers/new_base/backend_modelpolicy.py
index 612f810..df6e183 100644
--- a/xos/synchronizers/new_base/backend_modelpolicy.py
+++ b/xos/synchronizers/new_base/backend_modelpolicy.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import inspect
 import imp
diff --git a/xos/synchronizers/new_base/deleter.py b/xos/synchronizers/new_base/deleter.py
index 7f0d332..e14c840 100644
--- a/xos/synchronizers/new_base/deleter.py
+++ b/xos/synchronizers/new_base/deleter.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # NOTE this appear not to be used, can we delete it?
 
 class Deleter:
diff --git a/xos/synchronizers/new_base/dependency_walker_new.py b/xos/synchronizers/new_base/dependency_walker_new.py
index add8f27..11c6ce1 100644
--- a/xos/synchronizers/new_base/dependency_walker_new.py
+++ b/xos/synchronizers/new_base/dependency_walker_new.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 # TODO: Moved this into the synchronizer, as it appeared to require model
diff --git a/xos/synchronizers/new_base/diag.py b/xos/synchronizers/new_base/diag.py
index ff0a341..547825c 100644
--- a/xos/synchronizers/new_base/diag.py
+++ b/xos/synchronizers/new_base/diag.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import traceback
 import json
 
diff --git a/xos/synchronizers/new_base/djangoaccessor.py b/xos/synchronizers/new_base/djangoaccessor.py
index aa916c0..f833777 100644
--- a/xos/synchronizers/new_base/djangoaccessor.py
+++ b/xos/synchronizers/new_base/djangoaccessor.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import traceback
 
 import django.apps
diff --git a/xos/synchronizers/new_base/error_mapper.py b/xos/synchronizers/new_base/error_mapper.py
index 82805f1..3678629 100644
--- a/xos/synchronizers/new_base/error_mapper.py
+++ b/xos/synchronizers/new_base/error_mapper.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xos.logger import Logger, logging, logger
 
 logger = Logger(level=logging.INFO)
diff --git a/xos/synchronizers/new_base/event_loop.py b/xos/synchronizers/new_base/event_loop.py
index 32d3da4..11ebd7d 100644
--- a/xos/synchronizers/new_base/event_loop.py
+++ b/xos/synchronizers/new_base/event_loop.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import imp
 import inspect
diff --git a/xos/synchronizers/new_base/event_manager.py b/xos/synchronizers/new_base/event_manager.py
index 7592650..77114c8 100644
--- a/xos/synchronizers/new_base/event_manager.py
+++ b/xos/synchronizers/new_base/event_manager.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # FIXME Appear that a lot of unused code sits in here
 
 import threading
diff --git a/xos/synchronizers/new_base/exceptions.py b/xos/synchronizers/new_base/exceptions.py
index 5aa8583..a233603 100644
--- a/xos/synchronizers/new_base/exceptions.py
+++ b/xos/synchronizers/new_base/exceptions.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 class SynchronizerException(Exception):
     pass
 
diff --git a/xos/synchronizers/new_base/model_policies/__init__.py b/xos/synchronizers/new_base/model_policies/__init__.py
index e69de29..d4e8062 100644
--- a/xos/synchronizers/new_base/model_policies/__init__.py
+++ b/xos/synchronizers/new_base/model_policies/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/synchronizers/new_base/model_policies/model_policy_tenantwithcontainer.py b/xos/synchronizers/new_base/model_policies/model_policy_tenantwithcontainer.py
index 41fa0a5..1af23cb 100644
--- a/xos/synchronizers/new_base/model_policies/model_policy_tenantwithcontainer.py
+++ b/xos/synchronizers/new_base/model_policies/model_policy_tenantwithcontainer.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from synchronizers.new_base.modelaccessor import *
 from synchronizers.new_base.policy import Policy
 from synchronizers.new_base.exceptions import *
diff --git a/xos/synchronizers/new_base/model_policies/test_config.yaml b/xos/synchronizers/new_base/model_policies/test_config.yaml
index c8e1b4b..0fd317f 100644
--- a/xos/synchronizers/new_base/model_policies/test_config.yaml
+++ b/xos/synchronizers/new_base/model_policies/test_config.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 name: test-model-policies
 accessor:
   username: xosadmin@opencord.org
diff --git a/xos/synchronizers/new_base/model_policies/test_model_policy_tenantwithcontainer.py b/xos/synchronizers/new_base/model_policies/test_model_policy_tenantwithcontainer.py
index 147240f..ec2f4c4 100644
--- a/xos/synchronizers/new_base/model_policies/test_model_policy_tenantwithcontainer.py
+++ b/xos/synchronizers/new_base/model_policies/test_model_policy_tenantwithcontainer.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from mock import patch
 import mock
diff --git a/xos/synchronizers/new_base/model_policy_loop.py b/xos/synchronizers/new_base/model_policy_loop.py
index 48641b7..d03400d 100644
--- a/xos/synchronizers/new_base/model_policy_loop.py
+++ b/xos/synchronizers/new_base/model_policy_loop.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from synchronizers.new_base.modelaccessor import *
 from synchronizers.new_base.dependency_walker_new import *
 from synchronizers.new_base.policy import Policy
diff --git a/xos/synchronizers/new_base/modelaccessor.py b/xos/synchronizers/new_base/modelaccessor.py
index 89ee257..303b1a8 100644
--- a/xos/synchronizers/new_base/modelaccessor.py
+++ b/xos/synchronizers/new_base/modelaccessor.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ ModelAccessor
 
     A class for abstracting access to models. Used to get any djangoisms out
diff --git a/xos/synchronizers/new_base/policy.py b/xos/synchronizers/new_base/policy.py
index 03a258b..5877d94 100644
--- a/xos/synchronizers/new_base/policy.py
+++ b/xos/synchronizers/new_base/policy.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ policy.py
 
     Base Classes for Model Policies
diff --git a/xos/synchronizers/new_base/steps/__init__.py b/xos/synchronizers/new_base/steps/__init__.py
index c70b0c0..563b1bb 100644
--- a/xos/synchronizers/new_base/steps/__init__.py
+++ b/xos/synchronizers/new_base/steps/__init__.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #from .sync_controller_sites import SyncControllerSites
 #from .sync_controller_slices import SyncControllerSlices
 #from .sync_controller_users import SyncControllerUsers
diff --git a/xos/synchronizers/new_base/steps/sync_object.py b/xos/synchronizers/new_base/steps/sync_object.py
index 291605e..d26f706 100644
--- a/xos/synchronizers/new_base/steps/sync_object.py
+++ b/xos/synchronizers/new_base/steps/sync_object.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from synchronizers.new_base.syncstep import *
 
 class SyncObject(SyncStep):
diff --git a/xos/synchronizers/new_base/syncstep.py b/xos/synchronizers/new_base/syncstep.py
index b264f5a..a67186a 100644
--- a/xos/synchronizers/new_base/syncstep.py
+++ b/xos/synchronizers/new_base/syncstep.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import base64
 from xosconfig import Config
diff --git a/xos/synchronizers/new_base/templates/container.conf.j2 b/xos/synchronizers/new_base/templates/container.conf.j2
index 7cbb880..a912a85 100644
--- a/xos/synchronizers/new_base/templates/container.conf.j2
+++ b/xos/synchronizers/new_base/templates/container.conf.j2
@@ -1,3 +1,17 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
 # Upstart script for container
 description "container"
 author "smbaker@gmail.com"
diff --git a/xos/synchronizers/new_base/templates/container.service.j2 b/xos/synchronizers/new_base/templates/container.service.j2
index 817d6d7..22f1a43 100644
--- a/xos/synchronizers/new_base/templates/container.service.j2
+++ b/xos/synchronizers/new_base/templates/container.service.j2
@@ -1,3 +1,17 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
 [Unit]
 Description={{ container_name }}
 After=docker.service
diff --git a/xos/synchronizers/new_base/templates/start-container.sh.j2 b/xos/synchronizers/new_base/templates/start-container.sh.j2
index 2fbf478..feb4f04 100644
--- a/xos/synchronizers/new_base/templates/start-container.sh.j2
+++ b/xos/synchronizers/new_base/templates/start-container.sh.j2
@@ -1,5 +1,19 @@
 #!/bin/bash
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
 iptables -L > /dev/null
 ip6tables -L > /dev/null
 
@@ -86,19 +100,19 @@
 MAC=""
 {% endif %}
 
-DEVICE="{{ port.device }}"

-BRIDGE="{{ port.bridge }}"

-{% if port.s_tag %}

-# This is intended for lan_network. Assume that BRIDGE is set to br_lan. We

-# create a device that strips off the S-TAG.

-STAG="{{ port.s_tag }}"

-encapsulate_stag $BRIDGE $STAG

-SRC_DEV=$STAG_IFACE

-{% else %}

-# This is for a standard neutron private network. We use a donor VM to setup

-# openvswitch for us, and we snoop at its devices and create a tap using the

-# same settings.

-XOS_NETWORK_ID="{{ port.xos_network_id }}"

+DEVICE="{{ port.device }}"
+BRIDGE="{{ port.bridge }}"
+{% if port.s_tag %}
+# This is intended for lan_network. Assume that BRIDGE is set to br_lan. We
+# create a device that strips off the S-TAG.
+STAG="{{ port.s_tag }}"
+encapsulate_stag $BRIDGE $STAG
+SRC_DEV=$STAG_IFACE
+{% else %}
+# This is for a standard neutron private network. We use a donor VM to setup
+# openvswitch for us, and we snoop at its devices and create a tap using the
+# same settings.
+XOS_NETWORK_ID="{{ port.xos_network_id }}"
 INSTANCE_MAC="{{ port.snoop_instance_mac }}"
 INSTANCE_ID="{{ port.snoop_instance_id }}"
 INSTANCE_TAP=`virsh domiflist $INSTANCE_ID | grep -i $INSTANCE_MAC | awk '{print $1}'`
diff --git a/xos/synchronizers/new_base/templates/stop-container.sh.j2 b/xos/synchronizers/new_base/templates/stop-container.sh.j2
index 9cabb00..bfe4b71 100644
--- a/xos/synchronizers/new_base/templates/stop-container.sh.j2
+++ b/xos/synchronizers/new_base/templates/stop-container.sh.j2
@@ -1,3 +1,20 @@
+#!/bin/bash
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 CONTAINER={{ container_name }}
 
 docker stop $CONTAINER
diff --git a/xos/synchronizers/new_base/toposort.py b/xos/synchronizers/new_base/toposort.py
index 6839861..c8d58b5 100644
--- a/xos/synchronizers/new_base/toposort.py
+++ b/xos/synchronizers/new_base/toposort.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 import time
diff --git a/xos/synchronizers/new_base/watchers.py b/xos/synchronizers/new_base/watchers.py
index 6c78fca..5cda613 100644
--- a/xos/synchronizers/new_base/watchers.py
+++ b/xos/synchronizers/new_base/watchers.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import inspect
 import imp
diff --git a/xos/synchronizers/new_base/xos-policy.py b/xos/synchronizers/new_base/xos-policy.py
index 3ed8668..b24e30a 100644
--- a/xos/synchronizers/new_base/xos-policy.py
+++ b/xos/synchronizers/new_base/xos-policy.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 """ xos-policy.py
diff --git a/xos/synchronizers/new_base/xos-synchronizer.py b/xos/synchronizers/new_base/xos-synchronizer.py
index b48fcdf..f374d10 100644
--- a/xos/synchronizers/new_base/xos-synchronizer.py
+++ b/xos/synchronizers/new_base/xos-synchronizer.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 import os
 import argparse
diff --git a/xos/synchronizers/shared_templates/sync_service_composition.yaml b/xos/synchronizers/shared_templates/sync_service_composition.yaml
index f7fe985..767cd50 100644
--- a/xos/synchronizers/shared_templates/sync_service_composition.yaml
+++ b/xos/synchronizers/shared_templates/sync_service_composition.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 ---
 - hosts: {{ instance_name }}
   #gather_facts: False
diff --git a/xos/templates/admin/base.html b/xos/templates/admin/base.html
index c020272..d92e9a1 100644
--- a/xos/templates/admin/base.html
+++ b/xos/templates/admin/base.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load admin_static %}{% load suit_tags core_tags %}{% load url from future %}
 <!DOCTYPE html>
 <html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
diff --git a/xos/templates/admin/base_login.html b/xos/templates/admin/base_login.html
index c56bbc2..f4d60f4 100644
--- a/xos/templates/admin/base_login.html
+++ b/xos/templates/admin/base_login.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load admin_static %}
 <!DOCTYPE html>
 <html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
diff --git a/xos/templates/admin/base_logout.html b/xos/templates/admin/base_logout.html
index 61a8543..f53ffbc 100644
--- a/xos/templates/admin/base_logout.html
+++ b/xos/templates/admin/base_logout.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load admin_static %}
 <!DOCTYPE html>
 <html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
diff --git a/xos/templates/admin/base_site.html b/xos/templates/admin/base_site.html
index 29c757c..42e5f0a 100644
--- a/xos/templates/admin/base_site.html
+++ b/xos/templates/admin/base_site.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/base.html" %}
 {% load admin_static %}
 
diff --git a/xos/templates/admin/base_site_login.html b/xos/templates/admin/base_site_login.html
index b381c7f..08085e3 100644
--- a/xos/templates/admin/base_site_login.html
+++ b/xos/templates/admin/base_site_login.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/base_login.html" %}
 {% load i18n %}
 
diff --git a/xos/templates/admin/change_form_bc.html b/xos/templates/admin/change_form_bc.html
index bd3a310..5283b1a 100644
--- a/xos/templates/admin/change_form_bc.html
+++ b/xos/templates/admin/change_form_bc.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/change_form.html" %}
 {% load i18n admin_static admin_modify suit_tags admin_urls %}
 {% load url from future %}
diff --git a/xos/templates/admin/change_form_embedded.html b/xos/templates/admin/change_form_embedded.html
index e3c2915..d3526da 100644
--- a/xos/templates/admin/change_form_embedded.html
+++ b/xos/templates/admin/change_form_embedded.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/change_form.html" %}
 {% load i18n admin_static admin_modify suit_tags admin_urls %}
 {% load url from future %}
diff --git a/xos/templates/admin/change_list.html b/xos/templates/admin/change_list.html
index 602efaa..c37387a 100644
--- a/xos/templates/admin/change_list.html
+++ b/xos/templates/admin/change_list.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/base_site.html" %}
 {% load i18n admin_static admin_list admin_urls suit_list suit_tags %}
 
diff --git a/xos/templates/admin/change_list_embedded.html b/xos/templates/admin/change_list_embedded.html
index 77b39f3..c80e20c 100644
--- a/xos/templates/admin/change_list_embedded.html
+++ b/xos/templates/admin/change_list_embedded.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/change_list_bc.html" %}
 {% load i18n admin_static admin_modify suit_tags admin_urls %}
 {% load url from future %}
diff --git a/xos/templates/admin/change_list_results.html b/xos/templates/admin/change_list_results.html
index 74e4fb8..19319ab 100644
--- a/xos/templates/admin/change_list_results.html
+++ b/xos/templates/admin/change_list_results.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load i18n admin_static suit_list %}
 {% if result_hidden_fields %}
     <div class="hiddenfields">{# DIV for HTML validation #}
diff --git a/xos/templates/admin/core/SiteDeploymentNetwork/sitedepnettabular.html b/xos/templates/admin/core/SiteDeploymentNetwork/sitedepnettabular.html
index 71a62ba..d975a57 100644
--- a/xos/templates/admin/core/SiteDeploymentNetwork/sitedepnettabular.html
+++ b/xos/templates/admin/core/SiteDeploymentNetwork/sitedepnettabular.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load i18n admin_static admin_modify %}
 <div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
   <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
diff --git a/xos/templates/admin/core/instance/change_form.html b/xos/templates/admin/core/instance/change_form.html
index 4b5439c..f51fd17 100644
--- a/xos/templates/admin/core/instance/change_form.html
+++ b/xos/templates/admin/core/instance/change_form.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends 'admin/change_form.html' %}
 {% block extrahead %}
 {{ block.super }} 
diff --git a/xos/templates/admin/core/site/location_map.html b/xos/templates/admin/core/site/location_map.html
index d40734e..9abbb26 100644
--- a/xos/templates/admin/core/site/location_map.html
+++ b/xos/templates/admin/core/site/location_map.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div class="panel fieldset-body">
   <div class="form-group field-longitude ">
     <label class="control-label col-xs-12 col-sm-2">
diff --git a/xos/templates/admin/core/slice/change_form.html b/xos/templates/admin/core/slice/change_form.html
index 791fcec..df7e9e7 100644
--- a/xos/templates/admin/core/slice/change_form.html
+++ b/xos/templates/admin/core/slice/change_form.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends 'admin/change_form.html' %}
 {% block extrahead %}
 {{ block.super }} 
diff --git a/xos/templates/admin/dashboard/cdn_nodes.html b/xos/templates/admin/dashboard/cdn_nodes.html
index d93667d..b695b91 100644
--- a/xos/templates/admin/dashboard/cdn_nodes.html
+++ b/xos/templates/admin/dashboard/cdn_nodes.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div id="tabs-6">
 <div class="row">
         <span><b>Content Provider:</b></span>
diff --git a/xos/templates/admin/dashboard/cdnoperations.html b/xos/templates/admin/dashboard/cdnoperations.html
index 4677e5b..17ad1b3 100644
--- a/xos/templates/admin/dashboard/cdnoperations.html
+++ b/xos/templates/admin/dashboard/cdnoperations.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
     <div id="HPCDashboard">
     <h1>CDN Operations View</h1>
     <span id="hpcSummary">
diff --git a/xos/templates/admin/dashboard/dashboard_base.html b/xos/templates/admin/dashboard/dashboard_base.html
index d8f5a22..daf93a7 100644
--- a/xos/templates/admin/dashboard/dashboard_base.html
+++ b/xos/templates/admin/dashboard/dashboard_base.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/base.html" %}
 {% load admin_static %}
 
diff --git a/xos/templates/admin/dashboard/developer.html b/xos/templates/admin/dashboard/developer.html
index 55663f5..0319d98 100644
--- a/xos/templates/admin/dashboard/developer.html
+++ b/xos/templates/admin/dashboard/developer.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <div id="developerview"></div>
 
 <script>
diff --git a/xos/templates/admin/dashboard/hpc_historical.html b/xos/templates/admin/dashboard/hpc_historical.html
index 2e3b85e..3fab449 100644
--- a/xos/templates/admin/dashboard/hpc_historical.html
+++ b/xos/templates/admin/dashboard/hpc_historical.html
@@ -1,4 +1,22 @@
 
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
+
     <script type="text/javascript" src="//www.google.com/jsapi"></script>
     <link rel="stylesheet" href="/static/hpc_historical.css">
     <script type="text/javascript">
diff --git a/xos/templates/admin/dashboard/shell.html b/xos/templates/admin/dashboard/shell.html
index 8761f22..4c07018 100644
--- a/xos/templates/admin/dashboard/shell.html
+++ b/xos/templates/admin/dashboard/shell.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
   <div id="terminal">
     <p class="response">XSH - The XOS Shell</p>
     <br />
diff --git a/xos/templates/admin/dashboard/slice_interactions.html b/xos/templates/admin/dashboard/slice_interactions.html
index 3b335f5..a9e4db4 100644
--- a/xos/templates/admin/dashboard/slice_interactions.html
+++ b/xos/templates/admin/dashboard/slice_interactions.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
 <style>
 #slice_interaction_chart_placeholder {
diff --git a/xos/templates/admin/dashboard/tenant.html b/xos/templates/admin/dashboard/tenant.html
index 0fd627e..a87be93 100644
--- a/xos/templates/admin/dashboard/tenant.html
+++ b/xos/templates/admin/dashboard/tenant.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <!doctype html>
 <script type="text/javascript" src="http://www.google.com/jsapi"></script>
 <div id="dialog-form" title="Add/Remove Instances" style="display: none;">
diff --git a/xos/templates/admin/delete_confirmation.html b/xos/templates/admin/delete_confirmation.html
index c8a1be1..e1f8483 100644
--- a/xos/templates/admin/delete_confirmation.html
+++ b/xos/templates/admin/delete_confirmation.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/base_site.html" %}
 {% load i18n %}
 {% load admin_urls %}
diff --git a/xos/templates/admin/login.html b/xos/templates/admin/login.html
index 0f08665..d8a8186 100644
--- a/xos/templates/admin/login.html
+++ b/xos/templates/admin/login.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% extends "admin/base_site_login.html" %}
 {% load i18n admin_static %}
 
diff --git a/xos/templates/admin/menu.html b/xos/templates/admin/menu.html
index 8b5e23d..a34d3a5 100644
--- a/xos/templates/admin/menu.html
+++ b/xos/templates/admin/menu.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {#{% load sitetree %}#}
 {% load i18n suit_menu suit_tags core_tags %}
 {% load url from future %}
diff --git a/xos/templates/admin/newminidashboard.html b/xos/templates/admin/newminidashboard.html
index 5c08401..84c69e7 100644
--- a/xos/templates/admin/newminidashboard.html
+++ b/xos/templates/admin/newminidashboard.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load admin_static %}
 
 <script>
diff --git a/xos/templates/admin/pagination.html b/xos/templates/admin/pagination.html
index 4fb7ec4..6e90155 100644
--- a/xos/templates/admin/pagination.html
+++ b/xos/templates/admin/pagination.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load admin_list suit_list %}
 {% load i18n %}
 {% if cl.formset and cl.result_count %}
diff --git a/xos/templates/admin/request_account.html b/xos/templates/admin/request_account.html
index e69de29..28cbf46 100644
--- a/xos/templates/admin/request_account.html
+++ b/xos/templates/admin/request_account.html
@@ -0,0 +1,18 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
diff --git a/xos/templates/admin/search_form.html b/xos/templates/admin/search_form.html
index 2ff981d..62d53eb 100644
--- a/xos/templates/admin/search_form.html
+++ b/xos/templates/admin/search_form.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load i18n admin_static suit_tags suit_list %}
 {% suit_conf_value 'list_filters_position' as FILTERS_POS %}
 <div id="toolbar" class="row">
diff --git a/xos/templates/admin/submit_line.html b/xos/templates/admin/submit_line.html
index d1a80f9..abc08c4 100644
--- a/xos/templates/admin/submit_line.html
+++ b/xos/templates/admin/submit_line.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load i18n %}
 <div class="form-buttons clearfix">
   {% if show_save %}<button type="submit" class="btn btn-success" name="_save">{% trans 'Save' %}</button>{% endif %}
diff --git a/xos/templates/admin/tags/dashboard_list.html b/xos/templates/admin/tags/dashboard_list.html
index 647f144..cd0f393 100644
--- a/xos/templates/admin/tags/dashboard_list.html
+++ b/xos/templates/admin/tags/dashboard_list.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <ul class = "dashboard-list">
     {% for dashboard in dashboards %}
         <li
diff --git a/xos/templates/admin/tags/notification.html b/xos/templates/admin/tags/notification.html
index 558b9ff..992df40 100644
--- a/xos/templates/admin/tags/notification.html
+++ b/xos/templates/admin/tags/notification.html
@@ -1 +1,19 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {{template | safe}}
\ No newline at end of file
diff --git a/xos/templates/admin/wholePage.html b/xos/templates/admin/wholePage.html
index 4508e4e..4ea1e38 100644
--- a/xos/templates/admin/wholePage.html
+++ b/xos/templates/admin/wholePage.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 {% load admin_static %}
 <html>
 <head>
diff --git a/xos/templates/registration/logged_out.html b/xos/templates/registration/logged_out.html
index 437ed66..f43b342 100644
--- a/xos/templates/registration/logged_out.html
+++ b/xos/templates/registration/logged_out.html
@@ -1,4 +1,22 @@
 
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
+
 {% extends "admin/base_logout.html" %}
 {% load i18n admin_modify admin_static%}
 
diff --git a/xos/tests/permissiontest.py b/xos/tests/permissiontest.py
index 0b3c88f..15671ad 100644
--- a/xos/tests/permissiontest.py
+++ b/xos/tests/permissiontest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from core.models import *
 
diff --git a/xos/tests/rest_examples/add_truckroll.sh b/xos/tests/rest_examples/add_truckroll.sh
index ac092fa..2f8fc55 100755
--- a/xos/tests/rest_examples/add_truckroll.sh
+++ b/xos/tests/rest_examples/add_truckroll.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/tests/rest_examples/add_volt_tenant.sh b/xos/tests/rest_examples/add_volt_tenant.sh
index 4bbe2bb..e272c24 100755
--- a/xos/tests/rest_examples/add_volt_tenant.sh
+++ b/xos/tests/rest_examples/add_volt_tenant.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/tests/rest_examples/config.sh b/xos/tests/rest_examples/config.sh
index 06162ee..f9f2eca 100644
--- a/xos/tests/rest_examples/config.sh
+++ b/xos/tests/rest_examples/config.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #HOST=198.0.0.44:8000
 #HOST=10.254.1.22:8000
 HOST=clnode050.clemson.cloudlab.us:9999
diff --git a/xos/tests/rest_examples/delete_volt_tenant.sh b/xos/tests/rest_examples/delete_volt_tenant.sh
index 2557e72..ae7c266 100755
--- a/xos/tests/rest_examples/delete_volt_tenant.sh
+++ b/xos/tests/rest_examples/delete_volt_tenant.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/tests/rest_examples/list_cord_subscribers.sh b/xos/tests/rest_examples/list_cord_subscribers.sh
index 8deafa6..5be2510 100755
--- a/xos/tests/rest_examples/list_cord_subscribers.sh
+++ b/xos/tests/rest_examples/list_cord_subscribers.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/tests/rest_examples/list_truckrolls.sh b/xos/tests/rest_examples/list_truckrolls.sh
index 7aeaa4c..bce8272 100755
--- a/xos/tests/rest_examples/list_truckrolls.sh
+++ b/xos/tests/rest_examples/list_truckrolls.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/tests/rest_examples/list_volt_tenants.sh b/xos/tests/rest_examples/list_volt_tenants.sh
index f1348dd..c4e27a0 100755
--- a/xos/tests/rest_examples/list_volt_tenants.sh
+++ b/xos/tests/rest_examples/list_volt_tenants.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/bin/bash
 
 source ./config.sh
diff --git a/xos/tests/rest_useraccesstest.py b/xos/tests/rest_useraccesstest.py
index 37f7521..64db088 100644
--- a/xos/tests/rest_useraccesstest.py
+++ b/xos/tests/rest_useraccesstest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ useraccesstest.py
 
     This is a basic REST API permission test. Call it with a username and a
diff --git a/xos/tests/rest_usertest.py b/xos/tests/rest_usertest.py
index 14cba7e..a37805f 100644
--- a/xos/tests/rest_usertest.py
+++ b/xos/tests/rest_usertest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """
      UserTest - tests whether a user is able to fetch his own user record,
                 and modify fields.
diff --git a/xos/tests/ui-e2e/xos-e2e-test.py b/xos/tests/ui-e2e/xos-e2e-test.py
index 54de5f6..4da52f0 100644
--- a/xos/tests/ui-e2e/xos-e2e-test.py
+++ b/xos/tests/ui-e2e/xos-e2e-test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 from selenium import webdriver
 from selenium.webdriver.common.keys import Keys
diff --git a/xos/tests/ui/karma.conf.views.js b/xos/tests/ui/karma.conf.views.js
index 2a4d8ad..a6fca85 100644
--- a/xos/tests/ui/karma.conf.views.js
+++ b/xos/tests/ui/karma.conf.views.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 // THIS KARMA CONF WILL ITERATE THE VIEW FOLDER AND PERFORM ALL THE TESTS!!!
diff --git a/xos/tests/ui/template.module.js b/xos/tests/ui/template.module.js
index 1775ed0..3e271a2 100644
--- a/xos/tests/ui/template.module.js
+++ b/xos/tests/ui/template.module.js
@@ -1,3 +1,21 @@
+
+/*
+ * Copyright 2017-present Open Networking Foundation
+
+ * 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.
+ */
+
+
 'use strict';
 
 angular.module('templates', []);
\ No newline at end of file
diff --git a/xos/tools/ansible_hosts.py b/xos/tools/ansible_hosts.py
index 9ae3e52..b0f297a 100644
--- a/xos/tools/ansible_hosts.py
+++ b/xos/tools/ansible_hosts.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /usr/bin/env python
 
 import json
diff --git a/xos/tools/apigen/api.template.py b/xos/tools/apigen/api.template.py
index ef56885..ae35c36 100644
--- a/xos/tools/apigen/api.template.py
+++ b/xos/tools/apigen/api.template.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/tools/apigen/chameleon_list_test.template.sh b/xos/tools/apigen/chameleon_list_test.template.sh
index 1720a7b..dd7c9fd 100644
--- a/xos/tools/apigen/chameleon_list_test.template.sh
+++ b/xos/tools/apigen/chameleon_list_test.template.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 source /opt/xos/coreapi/tests/testconfig-chameleon.sh
 
 # test modeldefs
diff --git a/xos/tools/apigen/grpc_api.template.py b/xos/tools/apigen/grpc_api.template.py
index 90009eb..1048763 100644
--- a/xos/tools/apigen/grpc_api.template.py
+++ b/xos/tools/apigen/grpc_api.template.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import base64
 import time
 from protos import xos_pb2
diff --git a/xos/tools/apigen/grpc_list_test.template.py b/xos/tools/apigen/grpc_list_test.template.py
index 9891c5e..48c8fbd 100644
--- a/xos/tools/apigen/grpc_list_test.template.py
+++ b/xos/tools/apigen/grpc_list_test.template.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import grpc_client
 from grpc_client import Empty
 from testconfig import *
diff --git a/xos/tools/apigen/hpc-api.template.py b/xos/tools/apigen/hpc-api.template.py
index 23d27c2..b7bd30d 100644
--- a/xos/tools/apigen/hpc-api.template.py
+++ b/xos/tools/apigen/hpc-api.template.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/tools/apigen/lib.py b/xos/tools/apigen/lib.py
index 1a7b12e..5f8cc32 100644
--- a/xos/tools/apigen/lib.py
+++ b/xos/tools/apigen/lib.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import pdb
 
 def format_options_string(d):
diff --git a/xos/tools/cleanup_unique.py b/xos/tools/cleanup_unique.py
index e8358ce..3f6d167 100644
--- a/xos/tools/cleanup_unique.py
+++ b/xos/tools/cleanup_unique.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 sys.path.append("/opt/xos")
diff --git a/xos/tools/corebuilder/corebuilder.py b/xos/tools/corebuilder/corebuilder.py
index 26820da..e64afaf 100644
--- a/xos/tools/corebuilder/corebuilder.py
+++ b/xos/tools/corebuilder/corebuilder.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/python
 
 from stat import *
diff --git a/xos/tools/corebuilder/corebuilder_test.py b/xos/tools/corebuilder/corebuilder_test.py
index 6bbf03b..c616170 100644
--- a/xos/tools/corebuilder/corebuilder_test.py
+++ b/xos/tools/corebuilder/corebuilder_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import shutil
 import unittest
 from corebuilder import *
diff --git a/xos/tools/destroy-all-networks.sh b/xos/tools/destroy-all-networks.sh
index f590683..cadf5aa 100755
--- a/xos/tools/destroy-all-networks.sh
+++ b/xos/tools/destroy-all-networks.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /bin/bash
 
 # This will destroy all neutron networks, routers, and ports on Cloudlab. 
diff --git a/xos/tools/get_instance_ip.py b/xos/tools/get_instance_ip.py
index e8b5ee8..0e91fc3 100644
--- a/xos/tools/get_instance_ip.py
+++ b/xos/tools/get_instance_ip.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /usr/bin/env python
 
 import json
diff --git a/xos/tools/get_instance_name.py b/xos/tools/get_instance_name.py
index 844ba5a..8b0cf5c 100644
--- a/xos/tools/get_instance_name.py
+++ b/xos/tools/get_instance_name.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /usr/bin/env python
 
 import json
diff --git a/xos/tools/imagebuilder/vsg_image.yaml b/xos/tools/imagebuilder/vsg_image.yaml
index 405d044..bd81475 100644
--- a/xos/tools/imagebuilder/vsg_image.yaml
+++ b/xos/tools/imagebuilder/vsg_image.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 - hosts: localhost
   connection: local
   tasks:
diff --git a/xos/tools/openstack-db-cleanup.sh b/xos/tools/openstack-db-cleanup.sh
index 851d326..80bbc6a 100644
--- a/xos/tools/openstack-db-cleanup.sh
+++ b/xos/tools/openstack-db-cleanup.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /bin/bash
 
 # to install
diff --git a/xos/tools/openstack-healthcheck.py b/xos/tools/openstack-healthcheck.py
index 4b8a3f1..dd7e40a 100644
--- a/xos/tools/openstack-healthcheck.py
+++ b/xos/tools/openstack-healthcheck.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /usr/bin/env python
 
 """
diff --git a/xos/tools/purge.py b/xos/tools/purge.py
index 8c081e6..797187d 100644
--- a/xos/tools/purge.py
+++ b/xos/tools/purge.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 sys.path.append("/opt/xos")
diff --git a/xos/tools/rebuild.py b/xos/tools/rebuild.py
index dc2c482..4377cd8 100755
--- a/xos/tools/rebuild.py
+++ b/xos/tools/rebuild.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python                                                                                                               
 
 import os
diff --git a/xos/tools/wait_for_object_creation.py b/xos/tools/wait_for_object_creation.py
index b2af38f..f98f626 100755
--- a/xos/tools/wait_for_object_creation.py
+++ b/xos/tools/wait_for_object_creation.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 sys.path.append("/opt/xos")
diff --git a/xos/tosca/__init__.py b/xos/tosca/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/tosca/__init__.py
+++ b/xos/tosca/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/tosca/all_samples.sh b/xos/tosca/all_samples.sh
index 9b8f189..3c1b2c4 100755
--- a/xos/tosca/all_samples.sh
+++ b/xos/tosca/all_samples.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # cleanup phase
 for f in samples/*.yaml; do
    echo --------------------------------------------------
diff --git a/xos/tosca/custom_types/cdn.m4 b/xos/tosca/custom_types/cdn.m4
index 0d33715..1ad6970 100644
--- a/xos/tosca/custom_types/cdn.m4
+++ b/xos/tosca/custom_types/cdn.m4
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 # Note: Tosca derived_from isn't working the way I think it should, it's not
diff --git a/xos/tosca/custom_types/cdn.yaml b/xos/tosca/custom_types/cdn.yaml
index 0d33715..1ad6970 100644
--- a/xos/tosca/custom_types/cdn.yaml
+++ b/xos/tosca/custom_types/cdn.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 # Note: Tosca derived_from isn't working the way I think it should, it's not
diff --git a/xos/tosca/custom_types/macros.m4 b/xos/tosca/custom_types/macros.m4
index 1f48f10..391aafd 100644
--- a/xos/tosca/custom_types/macros.m4
+++ b/xos/tosca/custom_types/macros.m4
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # Note: Tosca derived_from isn't working the way I think it should, it's not
 #    inheriting from the parent template. Until we get that figured out, use
 #    m4 macros do our inheritance
diff --git a/xos/tosca/custom_types/xos.m4 b/xos/tosca/custom_types/xos.m4
index 63248b6..4ff6fcd 100644
--- a/xos/tosca/custom_types/xos.m4
+++ b/xos/tosca/custom_types/xos.m4
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 # compile this with "m4 xos.m4 > xos.yaml"
diff --git a/xos/tosca/custom_types/xos.yaml b/xos/tosca/custom_types/xos.yaml
index 7ecb3ae..e782a74 100644
--- a/xos/tosca/custom_types/xos.yaml
+++ b/xos/tosca/custom_types/xos.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 # compile this with "m4 xos.m4 > xos.yaml"
diff --git a/xos/tosca/daemon.py b/xos/tosca/daemon.py
index dc6e057..1f015eb 100644
--- a/xos/tosca/daemon.py
+++ b/xos/tosca/daemon.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ A very simple Tosca daemon. Every ten seconds it looks for new programs in
     "run" or "destroy" status, and executes them.
 
diff --git a/xos/tosca/definitions/TOSCA_definition_1_0.yaml b/xos/tosca/definitions/TOSCA_definition_1_0.yaml
index 97a8c44..e6d74e5 100644
--- a/xos/tosca/definitions/TOSCA_definition_1_0.yaml
+++ b/xos/tosca/definitions/TOSCA_definition_1_0.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #    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
diff --git a/xos/tosca/destroy.py b/xos/tosca/destroy.py
index 0c65600..e4e8ce1 100644
--- a/xos/tosca/destroy.py
+++ b/xos/tosca/destroy.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 
diff --git a/xos/tosca/doctemplates/html/node_type.html b/xos/tosca/doctemplates/html/node_type.html
index 95e8b7b..7e5e2c2 100644
--- a/xos/tosca/doctemplates/html/node_type.html
+++ b/xos/tosca/doctemplates/html/node_type.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <hr>
 <h2 id="{{ node_type.node_type_name }}">{{ node_type.node_type_name }}</h2>
 <blockquote>
diff --git a/xos/tosca/doctemplates/html/toscadoctemplate.html b/xos/tosca/doctemplates/html/toscadoctemplate.html
index 8568d33..918e3e3 100644
--- a/xos/tosca/doctemplates/html/toscadoctemplate.html
+++ b/xos/tosca/doctemplates/html/toscadoctemplate.html
@@ -1,3 +1,21 @@
+
+<!--
+Copyright 2017-present Open Networking Foundation
+
+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.
+-->
+
+
 <html><head>
 <title>XOS TOSCA Reference</title>
 
diff --git a/xos/tosca/engine.py b/xos/tosca/engine.py
index 12ab3f5..b470a1f 100644
--- a/xos/tosca/engine.py
+++ b/xos/tosca/engine.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import pdb
 import resources
diff --git a/xos/tosca/flavorselect.py b/xos/tosca/flavorselect.py
index cab8e56..b03151b 100644
--- a/xos/tosca/flavorselect.py
+++ b/xos/tosca/flavorselect.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 
diff --git a/xos/tosca/imageselect.py b/xos/tosca/imageselect.py
index 0cf4da8..a861180 100644
--- a/xos/tosca/imageselect.py
+++ b/xos/tosca/imageselect.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 
diff --git a/xos/tosca/makedocs.py b/xos/tosca/makedocs.py
index 2db6db8..e9ef4dc 100644
--- a/xos/tosca/makedocs.py
+++ b/xos/tosca/makedocs.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import jinja2
 import os
 import sys
diff --git a/xos/tosca/nodeselect.py b/xos/tosca/nodeselect.py
index ce4888f..fdb4b7b 100644
--- a/xos/tosca/nodeselect.py
+++ b/xos/tosca/nodeselect.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 
diff --git a/xos/tosca/resources/__init__.py b/xos/tosca/resources/__init__.py
index 9be1591..a371b08 100644
--- a/xos/tosca/resources/__init__.py
+++ b/xos/tosca/resources/__init__.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from django.conf.urls import patterns, url
 from rest_framework.routers import DefaultRouter
diff --git a/xos/tosca/resources/addresspool.py b/xos/tosca/resources/addresspool.py
index bc2b9b0..1894b06 100644
--- a/xos/tosca/resources/addresspool.py
+++ b/xos/tosca/resources/addresspool.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import socket
 import struct
 
diff --git a/xos/tosca/resources/compute.py b/xos/tosca/resources/compute.py
index 9508a6d..84321b9 100644
--- a/xos/tosca/resources/compute.py
+++ b/xos/tosca/resources/compute.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Slice,Instance,User,Flavor,Node,Image
 from nodeselect import XOSNodeSelector
diff --git a/xos/tosca/resources/controller.py b/xos/tosca/resources/controller.py
index 3fad2a6..d297851 100644
--- a/xos/tosca/resources/controller.py
+++ b/xos/tosca/resources/controller.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User,Controller,Deployment
 
diff --git a/xos/tosca/resources/dashboardview.py b/xos/tosca/resources/dashboardview.py
index a7bd265..247d2dd 100644
--- a/xos/tosca/resources/dashboardview.py
+++ b/xos/tosca/resources/dashboardview.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import DashboardView, Site, Deployment, SiteDeployment, XOSGuiExtension
 
diff --git a/xos/tosca/resources/deployment.py b/xos/tosca/resources/deployment.py
index bb11e0d..fab19bb 100644
--- a/xos/tosca/resources/deployment.py
+++ b/xos/tosca/resources/deployment.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User,Deployment,DeploymentRole,DeploymentPrivilege,Image,ImageDeployments,Flavor
 
diff --git a/xos/tosca/resources/deploymentrole.py b/xos/tosca/resources/deploymentrole.py
index eadea56..8c63369 100644
--- a/xos/tosca/resources/deploymentrole.py
+++ b/xos/tosca/resources/deploymentrole.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User, Deployment, DeploymentRole
 
diff --git a/xos/tosca/resources/flavor.py b/xos/tosca/resources/flavor.py
index f78ab88..86e2a0b 100644
--- a/xos/tosca/resources/flavor.py
+++ b/xos/tosca/resources/flavor.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User, Deployment, Flavor
 
diff --git a/xos/tosca/resources/image.py b/xos/tosca/resources/image.py
index a7e549b..5c69946 100644
--- a/xos/tosca/resources/image.py
+++ b/xos/tosca/resources/image.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User, Deployment, Image
 
diff --git a/xos/tosca/resources/interfacetype.py b/xos/tosca/resources/interfacetype.py
index b91413f..bab4842 100644
--- a/xos/tosca/resources/interfacetype.py
+++ b/xos/tosca/resources/interfacetype.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import InterfaceType
 
diff --git a/xos/tosca/resources/network.py b/xos/tosca/resources/network.py
index 7724167..95923ea 100644
--- a/xos/tosca/resources/network.py
+++ b/xos/tosca/resources/network.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Slice,User,Network,NetworkTemplate,NetworkSlice,Service,ServiceInstanceLink
 
diff --git a/xos/tosca/resources/networkparametertype.py b/xos/tosca/resources/networkparametertype.py
index 2061595..73a3737 100644
--- a/xos/tosca/resources/networkparametertype.py
+++ b/xos/tosca/resources/networkparametertype.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Slice,User,Network,NetworkParameterType
 
diff --git a/xos/tosca/resources/networktemplate.py b/xos/tosca/resources/networktemplate.py
index 4546330..9fbf51f 100644
--- a/xos/tosca/resources/networktemplate.py
+++ b/xos/tosca/resources/networktemplate.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Slice,User,Network,NetworkTemplate
 
diff --git a/xos/tosca/resources/node.py b/xos/tosca/resources/node.py
index 2051dd8..e508c1e 100644
--- a/xos/tosca/resources/node.py
+++ b/xos/tosca/resources/node.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Node, NodeLabel, Site, Deployment, SiteDeployment
 
diff --git a/xos/tosca/resources/nodelabel.py b/xos/tosca/resources/nodelabel.py
index 37bd871..a317360 100644
--- a/xos/tosca/resources/nodelabel.py
+++ b/xos/tosca/resources/nodelabel.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import NodeLabel
 
diff --git a/xos/tosca/resources/port.py b/xos/tosca/resources/port.py
index b03b168..d917674 100644
--- a/xos/tosca/resources/port.py
+++ b/xos/tosca/resources/port.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Instance,User,Network,NetworkTemplate,Port
 
diff --git a/xos/tosca/resources/service.py b/xos/tosca/resources/service.py
index f00d48a..965b0fd 100644
--- a/xos/tosca/resources/service.py
+++ b/xos/tosca/resources/service.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Service,User,ServiceDependency,AddressPool
 
diff --git a/xos/tosca/resources/serviceinterface.py b/xos/tosca/resources/serviceinterface.py
index 3d5a5b0..f7f61cb 100644
--- a/xos/tosca/resources/serviceinterface.py
+++ b/xos/tosca/resources/serviceinterface.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Service, InterfaceType, ServiceInterface
 
diff --git a/xos/tosca/resources/siterole.py b/xos/tosca/resources/siterole.py
index 52abe20..eda7ab5 100644
--- a/xos/tosca/resources/siterole.py
+++ b/xos/tosca/resources/siterole.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User, Deployment, SiteRole
 
diff --git a/xos/tosca/resources/slice.py b/xos/tosca/resources/slice.py
index 1a633ba..a1a1184 100644
--- a/xos/tosca/resources/slice.py
+++ b/xos/tosca/resources/slice.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Slice,User,Site,Network,NetworkSlice,SliceRole,SlicePrivilege,Service,Image,Flavor,Node
 
diff --git a/xos/tosca/resources/slicerole.py b/xos/tosca/resources/slicerole.py
index 3c21872..bab63e9 100644
--- a/xos/tosca/resources/slicerole.py
+++ b/xos/tosca/resources/slicerole.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User, Deployment, SliceRole
 
diff --git a/xos/tosca/resources/tag.py b/xos/tosca/resources/tag.py
index ab7ec30..c969675 100644
--- a/xos/tosca/resources/tag.py
+++ b/xos/tosca/resources/tag.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import Tag, Service
 from django.contrib.contenttypes.models import ContentType
diff --git a/xos/tosca/resources/user.py b/xos/tosca/resources/user.py
index 87dbaab..a4388ba 100644
--- a/xos/tosca/resources/user.py
+++ b/xos/tosca/resources/user.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User, Site, SiteRole, SliceRole, SlicePrivilege, SitePrivilege, DashboardView, UserDashboardView
 
diff --git a/xos/tosca/resources/xosmodel.py b/xos/tosca/resources/xosmodel.py
index a99a611..dcef6d7 100644
--- a/xos/tosca/resources/xosmodel.py
+++ b/xos/tosca/resources/xosmodel.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import XOS
 
diff --git a/xos/tosca/resources/xosresource.py b/xos/tosca/resources/xosresource.py
index d6dd482..0a57a36 100644
--- a/xos/tosca/resources/xosresource.py
+++ b/xos/tosca/resources/xosresource.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import json
 import subprocess
diff --git a/xos/tosca/resources/xossite.py b/xos/tosca/resources/xossite.py
index 946b0e2..33f6464 100644
--- a/xos/tosca/resources/xossite.py
+++ b/xos/tosca/resources/xossite.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosresource import XOSResource
 from core.models import User,Site,Deployment,Controller,SiteDeployment
 
diff --git a/xos/tosca/run.py b/xos/tosca/run.py
index a286d2e..73c73fc 100755
--- a/xos/tosca/run.py
+++ b/xos/tosca/run.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import sys
 import inspect
diff --git a/xos/tosca/samples/cdn.yaml b/xos/tosca/samples/cdn.yaml
index e5a817c..ba2a4b3 100644
--- a/xos/tosca/samples/cdn.yaml
+++ b/xos/tosca/samples/cdn.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Template for deploying a single server with predefined properties.
diff --git a/xos/tosca/samples/ceilometer.yaml b/xos/tosca/samples/ceilometer.yaml
index 9797d59..276a293 100644
--- a/xos/tosca/samples/ceilometer.yaml
+++ b/xos/tosca/samples/ceilometer.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Setup CORD-related services -- vOLT, vCPE, vBNG.
diff --git a/xos/tosca/samples/composition.yaml b/xos/tosca/samples/composition.yaml
index 7b9db03..393c15b 100644
--- a/xos/tosca/samples/composition.yaml
+++ b/xos/tosca/samples/composition.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Two services "service_one" and "service_two" with a tenancy relationship.
diff --git a/xos/tosca/samples/container.yaml b/xos/tosca/samples/container.yaml
index bd69fbe..841c929 100644
--- a/xos/tosca/samples/container.yaml
+++ b/xos/tosca/samples/container.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Template for deploying a single server with predefined properties.
diff --git a/xos/tosca/samples/container_slice.yaml b/xos/tosca/samples/container_slice.yaml
index 520bec0..f8877df 100644
--- a/xos/tosca/samples/container_slice.yaml
+++ b/xos/tosca/samples/container_slice.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: >
diff --git a/xos/tosca/samples/cord-cloudlab.yaml b/xos/tosca/samples/cord-cloudlab.yaml
index 20e8057..05a7f01 100644
--- a/xos/tosca/samples/cord-cloudlab.yaml
+++ b/xos/tosca/samples/cord-cloudlab.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Setup CORD-related services -- vOLT, vCPE, vBNG.
diff --git a/xos/tosca/samples/dashboardview.yaml b/xos/tosca/samples/dashboardview.yaml
index 2a358f2..24a1b19 100644
--- a/xos/tosca/samples/dashboardview.yaml
+++ b/xos/tosca/samples/dashboardview.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Dashboard View
diff --git a/xos/tosca/samples/exampleservice.yaml b/xos/tosca/samples/exampleservice.yaml
index 5b90ce2..d8e9cd6 100644
--- a/xos/tosca/samples/exampleservice.yaml
+++ b/xos/tosca/samples/exampleservice.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Setup the ExampleService
diff --git a/xos/tosca/samples/library-onboard.yaml b/xos/tosca/samples/library-onboard.yaml
index 30e20c9..7f8521c 100644
--- a/xos/tosca/samples/library-onboard.yaml
+++ b/xos/tosca/samples/library-onboard.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Sample library onboard
diff --git a/xos/tosca/samples/network_templates.yaml b/xos/tosca/samples/network_templates.yaml
index 5941079..68e12bd 100644
--- a/xos/tosca/samples/network_templates.yaml
+++ b/xos/tosca/samples/network_templates.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Make some network templates
diff --git a/xos/tosca/samples/new_site_deploy_slice.yaml b/xos/tosca/samples/new_site_deploy_slice.yaml
index 5e36bcb..e29a29c 100644
--- a/xos/tosca/samples/new_site_deploy_slice.yaml
+++ b/xos/tosca/samples/new_site_deploy_slice.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: >
diff --git a/xos/tosca/samples/one_instance.yaml b/xos/tosca/samples/one_instance.yaml
index f8919ed..9022b62 100644
--- a/xos/tosca/samples/one_instance.yaml
+++ b/xos/tosca/samples/one_instance.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Template for deploying a single server with predefined properties.
diff --git a/xos/tosca/samples/onos.yaml b/xos/tosca/samples/onos.yaml
index abb0268..713f029 100644
--- a/xos/tosca/samples/onos.yaml
+++ b/xos/tosca/samples/onos.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Setup CORD-related services -- vOLT, vCPE, vBNG.
diff --git a/xos/tosca/samples/privileges.yaml b/xos/tosca/samples/privileges.yaml
index d15f343..74558b0 100644
--- a/xos/tosca/samples/privileges.yaml
+++ b/xos/tosca/samples/privileges.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Make some network templates
diff --git a/xos/tosca/samples/samplelibrary.py b/xos/tosca/samples/samplelibrary.py
index 7a6030a..a6a0a4a 100644
--- a/xos/tosca/samples/samplelibrary.py
+++ b/xos/tosca/samples/samplelibrary.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 # some empty file used to test library onboarding
 
 pass
diff --git a/xos/tosca/samples/scalable_instance.yaml b/xos/tosca/samples/scalable_instance.yaml
index b3daa3f..3421f47 100644
--- a/xos/tosca/samples/scalable_instance.yaml
+++ b/xos/tosca/samples/scalable_instance.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Template for deploying a single server with predefined properties.
diff --git a/xos/tosca/samples/scalable_service.yaml b/xos/tosca/samples/scalable_service.yaml
index bbcb297..d39eae4 100644
--- a/xos/tosca/samples/scalable_service.yaml
+++ b/xos/tosca/samples/scalable_service.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Template for deploying a single server with predefined properties.
diff --git a/xos/tosca/samples/slice_default_image.yaml b/xos/tosca/samples/slice_default_image.yaml
index ff63373..71ec98f 100644
--- a/xos/tosca/samples/slice_default_image.yaml
+++ b/xos/tosca/samples/slice_default_image.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: >
diff --git a/xos/tosca/samples/slicetag.yaml b/xos/tosca/samples/slicetag.yaml
index ec064e3..7d4be54 100644
--- a/xos/tosca/samples/slicetag.yaml
+++ b/xos/tosca/samples/slicetag.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Setup CORD-related services -- vOLT, vCPE, vBNG.
diff --git a/xos/tosca/samples/two_slices_shared_private_net.yaml b/xos/tosca/samples/two_slices_shared_private_net.yaml
index 4646f9e..91fb20e 100644
--- a/xos/tosca/samples/two_slices_shared_private_net.yaml
+++ b/xos/tosca/samples/two_slices_shared_private_net.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Template for deploying a single server with predefined properties.
diff --git a/xos/tosca/samples/two_slices_two_networks.yaml b/xos/tosca/samples/two_slices_two_networks.yaml
index 080a6f0..f161af7 100644
--- a/xos/tosca/samples/two_slices_two_networks.yaml
+++ b/xos/tosca/samples/two_slices_two_networks.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Template for deploying a single server with predefined properties.
diff --git a/xos/tosca/samples/users.yaml b/xos/tosca/samples/users.yaml
index 20da611..0bcbb06 100644
--- a/xos/tosca/samples/users.yaml
+++ b/xos/tosca/samples/users.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Make some network templates
diff --git a/xos/tosca/samples/vtn-external.yaml b/xos/tosca/samples/vtn-external.yaml
index ee41ac8..5b4970f 100644
--- a/xos/tosca/samples/vtn-external.yaml
+++ b/xos/tosca/samples/vtn-external.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Setup CORD-related services -- vOLT, vCPE, vBNG.
diff --git a/xos/tosca/samples/vtn-service-chain-ssh.yaml b/xos/tosca/samples/vtn-service-chain-ssh.yaml
index 7d2ca7c..fee557d 100644
--- a/xos/tosca/samples/vtn-service-chain-ssh.yaml
+++ b/xos/tosca/samples/vtn-service-chain-ssh.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Two services "service_one" and "service_two" with a tenancy relationship.
diff --git a/xos/tosca/samples/vtn-service-chain.yaml b/xos/tosca/samples/vtn-service-chain.yaml
index 51933d6..d004112 100644
--- a/xos/tosca/samples/vtn-service-chain.yaml
+++ b/xos/tosca/samples/vtn-service-chain.yaml
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 tosca_definitions_version: tosca_simple_yaml_1_0
 
 description: Two services "service_one" and "service_two" with a tenancy relationship.
diff --git a/xos/tosca/tests/allObserverTests.py b/xos/tosca/tests/allObserverTests.py
index 6a566a9..d1d4e97 100644
--- a/xos/tosca/tests/allObserverTests.py
+++ b/xos/tosca/tests/allObserverTests.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from observerVMTest import ObserverVMTest
 from observerContainerTest import ObserverContainerTest
 from observerImageTest import ObserverImageTest
diff --git a/xos/tosca/tests/alltests.py b/xos/tosca/tests/alltests.py
index 13dfeb8..f5eb2c8 100644
--- a/xos/tosca/tests/alltests.py
+++ b/xos/tosca/tests/alltests.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from enginetest import EngineTest
 from coarsetenancytest import CoarseTenancyTest
 from porttest import PortTest
diff --git a/xos/tosca/tests/basetest.py b/xos/tosca/tests/basetest.py
index 80bbe58..fbd2199 100644
--- a/xos/tosca/tests/basetest.py
+++ b/xos/tosca/tests/basetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import os
 import random
 import string
diff --git a/xos/tosca/tests/coarsetenancytest.py b/xos/tosca/tests/coarsetenancytest.py
index 3da288f..2b3ba13 100644
--- a/xos/tosca/tests/coarsetenancytest.py
+++ b/xos/tosca/tests/coarsetenancytest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Service, CoarseTenant
diff --git a/xos/tosca/tests/computetest.py b/xos/tosca/tests/computetest.py
index 7827f24..afb71e5 100644
--- a/xos/tosca/tests/computetest.py
+++ b/xos/tosca/tests/computetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Instance, Slice
diff --git a/xos/tosca/tests/controllertest.py b/xos/tosca/tests/controllertest.py
index 2b7ba55..8d2add5 100644
--- a/xos/tosca/tests/controllertest.py
+++ b/xos/tosca/tests/controllertest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Controller, Deployment
diff --git a/xos/tosca/tests/deploymenttest.py b/xos/tosca/tests/deploymenttest.py
index 91caf75..0c300c8 100644
--- a/xos/tosca/tests/deploymenttest.py
+++ b/xos/tosca/tests/deploymenttest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Deployment, Image, User, DeploymentPrivilege
diff --git a/xos/tosca/tests/enginetest.py b/xos/tosca/tests/enginetest.py
index 187716b..6dfb3d7 100644
--- a/xos/tosca/tests/enginetest.py
+++ b/xos/tosca/tests/enginetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Service
diff --git a/xos/tosca/tests/imagetest.py b/xos/tosca/tests/imagetest.py
index d651027..df5019b 100644
--- a/xos/tosca/tests/imagetest.py
+++ b/xos/tosca/tests/imagetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Image
diff --git a/xos/tosca/tests/networktest.py b/xos/tosca/tests/networktest.py
index fa446f9..c167761 100644
--- a/xos/tosca/tests/networktest.py
+++ b/xos/tosca/tests/networktest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Network, Slice, NetworkTemplate, NetworkSlice
diff --git a/xos/tosca/tests/nodetest.py b/xos/tosca/tests/nodetest.py
index 76b597c..81cf90e 100644
--- a/xos/tosca/tests/nodetest.py
+++ b/xos/tosca/tests/nodetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Node, Site, Deployment, SiteDeployment
diff --git a/xos/tosca/tests/observerContainerTest.py b/xos/tosca/tests/observerContainerTest.py
index a31b866..0d8fb1a 100644
--- a/xos/tosca/tests/observerContainerTest.py
+++ b/xos/tosca/tests/observerContainerTest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from observertest import BaseObserverToscaTest
 
 from core.models import Instance, Site
diff --git a/xos/tosca/tests/observerImageTest.py b/xos/tosca/tests/observerImageTest.py
index 3588b04..0b1a063 100644
--- a/xos/tosca/tests/observerImageTest.py
+++ b/xos/tosca/tests/observerImageTest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from observertest import BaseObserverToscaTest
 
 from core.models import Image, Deployment, ControllerImages
diff --git a/xos/tosca/tests/observerSiteTest.py b/xos/tosca/tests/observerSiteTest.py
index a17c692..71ca928 100644
--- a/xos/tosca/tests/observerSiteTest.py
+++ b/xos/tosca/tests/observerSiteTest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from observertest import BaseObserverToscaTest
 
 from core.models import Site, Deployment, ControllerSite
diff --git a/xos/tosca/tests/observerSliceTest.py b/xos/tosca/tests/observerSliceTest.py
index 749f4ed..83697d3 100644
--- a/xos/tosca/tests/observerSliceTest.py
+++ b/xos/tosca/tests/observerSliceTest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from observertest import BaseObserverToscaTest
 
 from core.models import Site, Deployment, Slice, ControllerSlice
diff --git a/xos/tosca/tests/observerUserTest.py b/xos/tosca/tests/observerUserTest.py
index d2e0293..bf398c4 100644
--- a/xos/tosca/tests/observerUserTest.py
+++ b/xos/tosca/tests/observerUserTest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from observertest import BaseObserverToscaTest
 
 from core.models import Site, Deployment, User, ControllerUser
diff --git a/xos/tosca/tests/observerVMTest.py b/xos/tosca/tests/observerVMTest.py
index 65cbde5..f6957bb 100644
--- a/xos/tosca/tests/observerVMTest.py
+++ b/xos/tosca/tests/observerVMTest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from observertest import BaseObserverToscaTest
 
 from core.models import Instance, Site
diff --git a/xos/tosca/tests/porttest.py b/xos/tosca/tests/porttest.py
index 4ef7a7d..693a9d8 100644
--- a/xos/tosca/tests/porttest.py
+++ b/xos/tosca/tests/porttest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Network, Slice, NetworkTemplate, NetworkSlice, Port, Instance
diff --git a/xos/tosca/tests/servicetest.py b/xos/tosca/tests/servicetest.py
index 276463d..0b427dc 100644
--- a/xos/tosca/tests/servicetest.py
+++ b/xos/tosca/tests/servicetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Service
diff --git a/xos/tosca/tests/sitetest.py b/xos/tosca/tests/sitetest.py
index 5321159..4c17dbc 100644
--- a/xos/tosca/tests/sitetest.py
+++ b/xos/tosca/tests/sitetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Site, SitePrivilege, User
diff --git a/xos/tosca/tests/slicetest.py b/xos/tosca/tests/slicetest.py
index 98de4e6..ee24e07 100644
--- a/xos/tosca/tests/slicetest.py
+++ b/xos/tosca/tests/slicetest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import Slice, Site, User, SlicePrivilege
diff --git a/xos/tosca/tests/usertest.py b/xos/tosca/tests/usertest.py
index f36eb06..f4bfe86 100644
--- a/xos/tosca/tests/usertest.py
+++ b/xos/tosca/tests/usertest.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from basetest import BaseToscaTest
 
 from core.models import User
diff --git a/xos/uwsgi/xos.ini b/xos/uwsgi/xos.ini
index 63eb6b2..4eb399a 100644
--- a/xos/uwsgi/xos.ini
+++ b/xos/uwsgi/xos.ini
@@ -1,3 +1,19 @@
+
+;Copyright 2017-present Open Networking Foundation
+;
+;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.
+
+
 [uwsgi]
 chdir = /opt/xos
 module = xos.wsgi:application
diff --git a/xos/xos/__init__.py b/xos/xos/__init__.py
index e69de29..d4e8062 100644
--- a/xos/xos/__init__.py
+++ b/xos/xos/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/xos/admin_customize/__init__.py b/xos/xos/admin_customize/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/xos/admin_customize/__init__.py
+++ b/xos/xos/admin_customize/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/xos/admin_customize/templatetags/__init__.py b/xos/xos/admin_customize/templatetags/__init__.py
index 8b13789..65fdf5b 100644
--- a/xos/xos/admin_customize/templatetags/__init__.py
+++ b/xos/xos/admin_customize/templatetags/__init__.py
@@ -1 +1,17 @@
 
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
+
diff --git a/xos/xos/admin_customize/templatetags/admin_modify.py b/xos/xos/admin_customize/templatetags/admin_modify.py
index e2a8c7b..ad83671 100644
--- a/xos/xos/admin_customize/templatetags/admin_modify.py
+++ b/xos/xos/admin_customize/templatetags/admin_modify.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.contrib.admin.templatetags.admin_modify import *
 from django.contrib.admin.templatetags.admin_modify import submit_row as original_submit_row
 from django.conf import settings
diff --git a/xos/xos/apibase.py b/xos/xos/apibase.py
index e22128b..44fb6bd 100644
--- a/xos/xos/apibase.py
+++ b/xos/xos/apibase.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.response import Response
 from rest_framework import serializers
 from rest_framework import generics
diff --git a/xos/xos/apps.py b/xos/xos/apps.py
index 1f09b51..46e64c0 100644
--- a/xos/xos/apps.py
+++ b/xos/xos/apps.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from suit.apps import DjangoSuitConfig
 
 
diff --git a/xos/xos/exceptions.py b/xos/xos/exceptions.py
index 805944b..aac2f4e 100644
--- a/xos/xos/exceptions.py
+++ b/xos/xos/exceptions.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from rest_framework.exceptions import APIException
 from rest_framework.exceptions import PermissionDenied as RestFrameworkPermissionDenied
diff --git a/xos/xos/exceptions_test.py b/xos/xos/exceptions_test.py
index ec8e448..07e2c2e 100644
--- a/xos/xos/exceptions_test.py
+++ b/xos/xos/exceptions_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import unittest
 import sys
 import os
diff --git a/xos/xos/hpcapi.py b/xos/xos/hpcapi.py
index 00b4ce5..3e10955 100644
--- a/xos/xos/hpcapi.py
+++ b/xos/xos/hpcapi.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/xos/logger.py b/xos/xos/logger.py
index f891d52..6bd62d4 100644
--- a/xos/xos/logger.py
+++ b/xos/xos/logger.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 
 # ----------------------------------------------------------------------
diff --git a/xos/xos/settings.py b/xos/xos/settings.py
index af91475..742ceae 100644
--- a/xos/xos/settings.py
+++ b/xos/xos/settings.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
 from django import VERSION as DJANGO_VERSION
 import socket
diff --git a/xos/xos/tests.py b/xos/xos/tests.py
index 501deb7..843cf15 100644
--- a/xos/xos/tests.py
+++ b/xos/xos/tests.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """
 This file demonstrates writing tests using the unittest module. These will pass
 when you run "manage.py test".
diff --git a/xos/xos/urls.py b/xos/xos/urls.py
index 6f5b524..f06f2d2 100644
--- a/xos/xos/urls.py
+++ b/xos/xos/urls.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import importlib
 from django.conf.urls import patterns, include, url
 
diff --git a/xos/xos/wsgi.py b/xos/xos/wsgi.py
index 55c6c1a..416c5ea 100644
--- a/xos/xos/wsgi.py
+++ b/xos/xos/wsgi.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """
 WSGI config for XOS.
 
diff --git a/xos/xos/xml_util.py b/xos/xos/xml_util.py
index 77b968f..53b21ba 100644
--- a/xos/xos/xml_util.py
+++ b/xos/xos/xml_util.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #!/usr/bin/env python
 from types import StringTypes
 from lxml import etree
diff --git a/xos/xos/xosapi.py b/xos/xos/xosapi.py
index e403e54..68f7580 100644
--- a/xos/xos/xosapi.py
+++ b/xos/xos/xosapi.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
diff --git a/xos/xos_client/setup.py b/xos/xos_client/setup.py
index 5b072e2..077660f 100644
--- a/xos/xos_client/setup.py
+++ b/xos/xos_client/setup.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /usr/bin/env python
 
 import os
diff --git a/xos/xos_client/tests/csr_introspect.py b/xos/xos_client/tests/csr_introspect.py
index 8ca3be5..c5ca1a7 100644
--- a/xos/xos_client/tests/csr_introspect.py
+++ b/xos/xos_client/tests/csr_introspect.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import sys
 sys.path.append("..")
 
diff --git a/xos/xos_client/tests/nopper.py b/xos/xos_client/tests/nopper.py
index 564c84b..dd27f32 100644
--- a/xos/xos_client/tests/nopper.py
+++ b/xos/xos_client/tests/nopper.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ nopper
 
     Sends NoOp operations to Core API Server at maximum rate and reports
diff --git a/xos/xos_client/tests/orm_listall.py b/xos/xos_client/tests/orm_listall.py
index 4da92d1..b353ce8 100644
--- a/xos/xos_client/tests/orm_listall.py
+++ b/xos/xos_client/tests/orm_listall.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import sys
 import traceback
 sys.path.append("..")
diff --git a/xos/xos_client/tests/orm_user_crud.py b/xos/xos_client/tests/orm_user_crud.py
index 875c08e..270b16e 100644
--- a/xos/xos_client/tests/orm_user_crud.py
+++ b/xos/xos_client/tests/orm_user_crud.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import sys
 sys.path.append("..")
 
diff --git a/xos/xos_client/tests/run_tests.sh b/xos/xos_client/tests/run_tests.sh
index ccc3be9..e052049 100755
--- a/xos/xos_client/tests/run_tests.sh
+++ b/xos/xos_client/tests/run_tests.sh
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 #! /bin/bash
 
 # Run the tests from the head-node against an xos-client VM
diff --git a/xos/xos_client/tests/vsg_introspect.py b/xos/xos_client/tests/vsg_introspect.py
index e3c7329..ed34117 100644
--- a/xos/xos_client/tests/vsg_introspect.py
+++ b/xos/xos_client/tests/vsg_introspect.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import sys
 sys.path.append("..")
 
diff --git a/xos/xos_client/tests/vtr_crud.py b/xos/xos_client/tests/vtr_crud.py
index 9b29786..3d5fab5 100644
--- a/xos/xos_client/tests/vtr_crud.py
+++ b/xos/xos_client/tests/vtr_crud.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import sys
 sys.path.append("..")
 
diff --git a/xos/xos_client/xosapi/__init__.py b/xos/xos_client/xosapi/__init__.py
index e69de29..d4e8062 100644
--- a/xos/xos_client/xosapi/__init__.py
+++ b/xos/xos_client/xosapi/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/xos_client/xosapi/convenience/__init__.py b/xos/xos_client/xosapi/convenience/__init__.py
index e69de29..d4e8062 100644
--- a/xos/xos_client/xosapi/convenience/__init__.py
+++ b/xos/xos_client/xosapi/convenience/__init__.py
@@ -0,0 +1,16 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
diff --git a/xos/xos_client/xosapi/convenience/addresspool.py b/xos/xos_client/xosapi/convenience/addresspool.py
index 1653ec8..eb88447 100644
--- a/xos/xos_client/xosapi/convenience/addresspool.py
+++ b/xos/xos_client/xosapi/convenience/addresspool.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperAddressPool(ORMWrapper):
diff --git a/xos/xos_client/xosapi/convenience/controller.py b/xos/xos_client/xosapi/convenience/controller.py
index e7a864a..2808cc5 100644
--- a/xos/xos_client/xosapi/convenience/controller.py
+++ b/xos/xos_client/xosapi/convenience/controller.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/cordsubscriberroot.py b/xos/xos_client/xosapi/convenience/cordsubscriberroot.py
index 317094a..9ae8407 100644
--- a/xos/xos_client/xosapi/convenience/cordsubscriberroot.py
+++ b/xos/xos_client/xosapi/convenience/cordsubscriberroot.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/instance.py b/xos/xos_client/xosapi/convenience/instance.py
index 10da548..d7234c8 100644
--- a/xos/xos_client/xosapi/convenience/instance.py
+++ b/xos/xos_client/xosapi/convenience/instance.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperInstance(ORMWrapper):
diff --git a/xos/xos_client/xosapi/convenience/onosapp.py b/xos/xos_client/xosapi/convenience/onosapp.py
index 4008466..331d518 100644
--- a/xos/xos_client/xosapi/convenience/onosapp.py
+++ b/xos/xos_client/xosapi/convenience/onosapp.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 from xosapi.convenience.tenant import ORMWrapperTenant
diff --git a/xos/xos_client/xosapi/convenience/port.py b/xos/xos_client/xosapi/convenience/port.py
index c74a58b..a329bba 100644
--- a/xos/xos_client/xosapi/convenience/port.py
+++ b/xos/xos_client/xosapi/convenience/port.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/privilege.py b/xos/xos_client/xosapi/convenience/privilege.py
index d8292cf..72623da 100644
--- a/xos/xos_client/xosapi/convenience/privilege.py
+++ b/xos/xos_client/xosapi/convenience/privilege.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperPrivilege(ORMWrapper):
diff --git a/xos/xos_client/xosapi/convenience/service.py b/xos/xos_client/xosapi/convenience/service.py
index 965314b..380eb59 100644
--- a/xos/xos_client/xosapi/convenience/service.py
+++ b/xos/xos_client/xosapi/convenience/service.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/slice.py b/xos/xos_client/xosapi/convenience/slice.py
index b27b971..7686129 100644
--- a/xos/xos_client/xosapi/convenience/slice.py
+++ b/xos/xos_client/xosapi/convenience/slice.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/tag.py b/xos/xos_client/xosapi/convenience/tag.py
index 19338ce..be7bcf6 100644
--- a/xos/xos_client/xosapi/convenience/tag.py
+++ b/xos/xos_client/xosapi/convenience/tag.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperTag(ORMWrapper):
diff --git a/xos/xos_client/xosapi/convenience/tenant.py b/xos/xos_client/xosapi/convenience/tenant.py
index e8078f4..3b5ea28 100644
--- a/xos/xos_client/xosapi/convenience/tenant.py
+++ b/xos/xos_client/xosapi/convenience/tenant.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/user.py b/xos/xos_client/xosapi/convenience/user.py
index 082a8c1..b9ed933 100644
--- a/xos/xos_client/xosapi/convenience/user.py
+++ b/xos/xos_client/xosapi/convenience/user.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import hashlib
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
diff --git a/xos/xos_client/xosapi/convenience/volttenant.py b/xos/xos_client/xosapi/convenience/volttenant.py
index 5c19564..38b1f8e 100644
--- a/xos/xos_client/xosapi/convenience/volttenant.py
+++ b/xos/xos_client/xosapi/convenience/volttenant.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperVOLTTenant(ORMWrapper):
diff --git a/xos/xos_client/xosapi/convenience/vrouterapp.py b/xos/xos_client/xosapi/convenience/vrouterapp.py
index 7a670a3..3dafde2 100644
--- a/xos/xos_client/xosapi/convenience/vrouterapp.py
+++ b/xos/xos_client/xosapi/convenience/vrouterapp.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/vrouterservice.py b/xos/xos_client/xosapi/convenience/vrouterservice.py
index c1a38f5..28f1421 100644
--- a/xos/xos_client/xosapi/convenience/vrouterservice.py
+++ b/xos/xos_client/xosapi/convenience/vrouterservice.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 from xosapi.convenience.service import ORMWrapperService
diff --git a/xos/xos_client/xosapi/convenience/vroutertenant.py b/xos/xos_client/xosapi/convenience/vroutertenant.py
index 0a59b85..f9b76c2 100644
--- a/xos/xos_client/xosapi/convenience/vroutertenant.py
+++ b/xos/xos_client/xosapi/convenience/vroutertenant.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import json
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
diff --git a/xos/xos_client/xosapi/convenience/vsgtenant.py b/xos/xos_client/xosapi/convenience/vsgtenant.py
index 809d36d..e9648bb 100644
--- a/xos/xos_client/xosapi/convenience/vsgtenant.py
+++ b/xos/xos_client/xosapi/convenience/vsgtenant.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperVSGTenant(ORMWrapper):
diff --git a/xos/xos_client/xosapi/convenience/vtrtenant.py b/xos/xos_client/xosapi/convenience/vtrtenant.py
index 62856c1..ddc64ae 100644
--- a/xos/xos_client/xosapi/convenience/vtrtenant.py
+++ b/xos/xos_client/xosapi/convenience/vtrtenant.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 from xosapi.orm import ORMWrapper, register_convenience_wrapper
 
 class ORMWrapperVTRTenant(ORMWrapper):
diff --git a/xos/xos_client/xosapi/fake_stub.py b/xos/xos_client/xosapi/fake_stub.py
index 8cecf18..36af58b 100644
--- a/xos/xos_client/xosapi/fake_stub.py
+++ b/xos/xos_client/xosapi/fake_stub.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """ fake_stub.py
 
     Implements a simple fake grpc stub to use for unit testing.
diff --git a/xos/xos_client/xosapi/orm.py b/xos/xos_client/xosapi/orm.py
index f5c5f2c..3bd76ea 100644
--- a/xos/xos_client/xosapi/orm.py
+++ b/xos/xos_client/xosapi/orm.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 """
 Django-like ORM layer for gRPC
 
diff --git a/xos/xos_client/xosapi/orm_test.py b/xos/xos_client/xosapi/orm_test.py
index b20a3a9..23cba6d 100644
--- a/xos/xos_client/xosapi/orm_test.py
+++ b/xos/xos_client/xosapi/orm_test.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import exceptions
 import shutil
 import sys
diff --git a/xos/xos_client/xosapi/xos_grpc_client.py b/xos/xos_client/xosapi/xos_grpc_client.py
index d0d1f19..f8815ed 100644
--- a/xos/xos_client/xosapi/xos_grpc_client.py
+++ b/xos/xos_client/xosapi/xos_grpc_client.py
@@ -1,3 +1,19 @@
+
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+
 import argparse
 import base64
 import functools