diff --git a/.gitignore b/.gitignore index 33ad3e2..01d0ddf 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/freeipa-4.9.0.tar.gz +SOURCES/freeipa-4.9.2.tar.gz diff --git a/.ipa.metadata b/.ipa.metadata index 2b9d9e2..13b7ab7 100644 --- a/.ipa.metadata +++ b/.ipa.metadata @@ -1 +1 @@ -ec112726c49686f5981d0082b6a77d8c134a89b9 SOURCES/freeipa-4.9.0.tar.gz +c7b37727ffbdebe311990f7d31ae3b8bf2d06792 SOURCES/freeipa-4.9.2.tar.gz diff --git a/SOURCES/0001-ipatests_libsss_sudo_and_sudo_pagure#8530_rhbz#1932289.patch b/SOURCES/0001-ipatests_libsss_sudo_and_sudo_pagure#8530_rhbz#1932289.patch new file mode 100644 index 0000000..5935601 --- /dev/null +++ b/SOURCES/0001-ipatests_libsss_sudo_and_sudo_pagure#8530_rhbz#1932289.patch @@ -0,0 +1,381 @@ +From b590dcef10680b4ea3181ae1caec183e5967562b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com> +Date: Fri, 11 Dec 2020 07:35:59 +0200 +Subject: [PATCH] ipatests: add TestInstallWithoutSudo +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Test IPA servers and clients behavior when sudo is not installed. + +Fixes: https://pagure.io/freeipa/issue/8530 +Signed-off-by: François Cami <fcami@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com> +--- + .../nightly_ipa-4-9_latest.yaml | 12 ++++ + .../nightly_ipa-4-9_latest_selinux.yaml | 13 ++++ + .../nightly_ipa-4-9_previous.yaml | 12 ++++ + .../test_integration/test_installation.py | 66 +++++++++++++++++++ + 4 files changed, 103 insertions(+) + +diff --git a/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml b/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml +index 3acd6a13c..d91b16cab 100644 +--- a/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml ++++ b/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml +@@ -535,6 +535,18 @@ jobs: + timeout: 10800 + topology: *master_1repl + ++ fedora-latest-ipa-4-9/test_installation_TestInstallWithoutSudo: ++ requires: [fedora-latest-ipa-4-9/build] ++ priority: 50 ++ job: ++ class: RunPytest ++ args: ++ build_url: '{fedora-latest-ipa-4-9/build_url}' ++ test_suite: test_integration/test_installation.py::TestInstallWithoutSudo ++ template: *ci-ipa-4-9-latest ++ timeout: 4800 ++ topology: *master_1repl_1client ++ + fedora-latest-ipa-4-9/test_idviews: + requires: [fedora-latest-ipa-4-9/build] + priority: 50 +diff --git a/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml b/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml +index c01192cf5..8adb06d0c 100644 +--- a/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml ++++ b/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml +@@ -575,6 +575,19 @@ jobs: + timeout: 10800 + topology: *master_1repl + ++ fedora-latest-ipa-4-9/test_installation_TestInstallWithoutSudo: ++ requires: [fedora-latest-ipa-4-9/build] ++ priority: 50 ++ job: ++ class: RunPytest ++ args: ++ build_url: '{fedora-latest-ipa-4-9/build_url}' ++ selinux_enforcing: True ++ test_suite: test_integration/test_installation.py::TestInstallWithoutSudo ++ template: *ci-ipa-4-9-latest ++ timeout: 4800 ++ topology: *master_1repl_1client ++ + fedora-latest-ipa-4-9/test_idviews: + requires: [fedora-latest-ipa-4-9/build] + priority: 50 +diff --git a/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml b/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml +index a6ea24f6a..2b5d4fd5e 100644 +--- a/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml ++++ b/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml +@@ -535,6 +535,18 @@ jobs: + timeout: 10800 + topology: *master_1repl + ++ fedora-previous-ipa-4-9/test_installation_TestInstallWithoutSudo: ++ requires: [fedora-previous-ipa-4-9/build] ++ priority: 50 ++ job: ++ class: RunPytest ++ args: ++ build_url: '{fedora-previous-ipa-4-9/build_url}' ++ test_suite: test_integration/test_installation.py::TestInstallWithoutSudo ++ template: *ci-ipa-4-9-previous ++ timeout: 4800 ++ topology: *master_1repl_1client ++ + fedora-previous-ipa-4-9/test_idviews: + requires: [fedora-previous-ipa-4-9/build] + priority: 50 +diff --git a/ipatests/test_integration/test_installation.py b/ipatests/test_integration/test_installation.py +index eb6f7d78e..6e8af024c 100644 +--- a/ipatests/test_integration/test_installation.py ++++ b/ipatests/test_integration/test_installation.py +@@ -1537,3 +1537,69 @@ class TestInstallReplicaAgainstSpecificServer(IntegrationTest): + self.replicas[0].hostname], + stdin_text=dirman_password) + assert self.replicas[0].hostname not in cmd.stdout_text ++ ++ ++class TestInstallWithoutSudo(IntegrationTest): ++ ++ num_clients = 1 ++ num_replicas = 1 ++ no_sudo_str = "The sudo binary does not seem to be present on this" ++ ++ @classmethod ++ def install(cls, mh): ++ pass ++ ++ def test_sudo_removal(self): ++ # ipa-client makes sudo depend on libsss_sudo. ++ ++ # --nodeps is mandatory because dogtag uses sudo at install ++ # time until commit 49585867207922479644a03078c29548de02cd03 ++ # which is scheduled to land in 10.10. ++ ++ # This also means sudo+libsss_sudo cannot be uninstalled on ++ # IPA servers with a CA. ++ assert tasks.is_package_installed(self.clients[0], 'sudo') ++ assert tasks.is_package_installed(self.clients[0], 'libsss_sudo') ++ tasks.uninstall_packages( ++ self.clients[0], ['sudo', 'libsss_sudo'], nodeps=True ++ ) ++ ++ def test_ipa_installation_without_sudo(self): ++ # FixMe: When Dogtag 10.10 is out, test installation without sudo ++ tasks.install_master(self.master, setup_dns=True) ++ ++ def test_replica_installation_without_sudo(self): ++ # FixMe: When Dogtag 10.10 is out, test replica installation ++ # without sudo and with CA ++ tasks.uninstall_packages( ++ self.replicas[0], ['sudo', 'libsss_sudo'], nodeps=True ++ ) ++ # One-step install is needed. ++ # With promote=True, two-step install is done and that only captures ++ # the ipa-replica-install stdout/stderr, not ipa-client-install's. ++ result = tasks.install_replica( ++ self.master, self.replicas[0], promote=False, ++ setup_dns=True, setup_ca=False ++ ) ++ assert self.no_sudo_str in result.stderr_text ++ ++ def test_client_installation_without_sudo(self): ++ result = tasks.install_client(self.master, self.clients[0]) ++ assert self.no_sudo_str in result.stderr_text ++ ++ def test_remove_sudo_on_ipa(self): ++ tasks.uninstall_packages( ++ self.master, ['sudo', 'libsss_sudo'], nodeps=True ++ ) ++ self.master.run_command( ++ ['ipactl', 'restart'] ++ ) ++ ++ def test_install_sudo_on_client(self): ++ """ Check that installing sudo pulls libsss_sudo in""" ++ for pkg in ('sudo', 'libsss_sudo'): ++ assert tasks.is_package_installed(self.clients[0], pkg) is False ++ tasks.uninstall_client(self.clients[0]) ++ tasks.install_packages(self.clients[0], ['sudo']) ++ for pkg in ('sudo', 'libsss_sudo'): ++ assert tasks.is_package_installed(self.clients[0], pkg) +-- +2.29.2 + +From 0c2741af9f353d2fbb21a5768e6433c0e99da0e9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com> +Date: Thu, 10 Dec 2020 08:35:12 +0200 +Subject: [PATCH] ipatests: tasks: handle uninstalling packages with nodeps +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Handle package removal without taking dependencies into account. +E.g. add frontends for rpm -e --nodeps. + +Related: ipatests/pytest_ipa/integration/tasks.py +Signed-off-by: François Cami <fcami@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com> +--- + ipatests/pytest_ipa/integration/tasks.py | 51 +++++++++++++++++++----- + 1 file changed, 41 insertions(+), 10 deletions(-) + +diff --git a/ipatests/pytest_ipa/integration/tasks.py b/ipatests/pytest_ipa/integration/tasks.py +index b91859816..2fe78367f 100755 +--- a/ipatests/pytest_ipa/integration/tasks.py ++++ b/ipatests/pytest_ipa/integration/tasks.py +@@ -29,6 +29,7 @@ import re + import collections + import itertools + import shutil ++import shlex + import copy + import subprocess + import tempfile +@@ -2381,20 +2382,33 @@ def download_packages(host, pkgs): + return tmpdir + + +-def uninstall_packages(host, pkgs): ++def uninstall_packages(host, pkgs, nodeps=False): + """Uninstall packages on a remote host. +- :param host: the host where the uninstallation takes place +- :param pkgs: packages to uninstall, provided as a list of strings ++ :param host: the host where the uninstallation takes place. ++ :param pkgs: packages to uninstall, provided as a list of strings. ++ :param nodeps: ignore dependencies (dangerous!). + """ + platform = get_platform(host) +- # Only supports RHEL 8+ and Fedora for now +- if platform in ('rhel', 'fedora'): +- install_cmd = ['/usr/bin/dnf', 'remove', '-y'] +- elif platform in ('ubuntu'): +- install_cmd = ['apt-get', 'remove', '-y'] ++ if platform not in ('rhel', 'fedora', 'ubuntu'): ++ raise ValueError('uninstall_packages: unknown platform %s' % platform) ++ if nodeps: ++ if platform in ('rhel', 'fedora'): ++ cmd = "rpm -e --nodeps" ++ elif platform in ('ubuntu'): ++ cmd = "dpkg -P --force-depends" ++ for package in pkgs: ++ uninstall_cmd = shlex.split(cmd) ++ uninstall_cmd.append(package) ++ # keep raiseonerr=True here. --fcami ++ host.run_command(uninstall_cmd) + else: +- raise ValueError('install_packages: unknown platform %s' % platform) +- host.run_command(install_cmd + pkgs, raiseonerr=False) ++ if platform in ('rhel', 'fedora'): ++ cmd = "/usr/bin/dnf remove -y" ++ elif platform in ('ubuntu'): ++ cmd = "apt-get remove -y" ++ uninstall_cmd = shlex.split(cmd) ++ uninstall_cmd.extend(pkgs) ++ host.run_command(uninstall_cmd, raiseonerr=False) + + + def wait_for_request(host, request_id, timeout=120): +@@ -2649,3 +2663,20 @@ def run_ssh_cmd( + assert "Authentication succeeded" not in stderr + assert "No more authentication methods to try." in stderr + return (return_code, stdout, stderr) ++ ++ ++def is_package_installed(host, pkg): ++ platform = get_platform(host) ++ if platform in ('rhel', 'fedora'): ++ result = host.run_command( ++ ['rpm', '-q', pkg], raiseonerr=False ++ ) ++ elif platform in ['ubuntu']: ++ result = host.run_command( ++ ['dpkg', '-s', pkg], raiseonerr=False ++ ) ++ else: ++ raise ValueError( ++ 'is_package_installed: unknown platform %s' % platform ++ ) ++ return result.returncode == 0 +-- +2.29.2 + +From fe157ca349e3146a53884e90e6e588efb4e97eeb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com> +Date: Thu, 10 Dec 2020 08:15:22 +0200 +Subject: [PATCH] ipa-client-install: output a warning if sudo is not present +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: https://pagure.io/freeipa/issue/8530 +Signed-off-by: François Cami <fcami@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com> +--- + ipaclient/install/client.py | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/ipaclient/install/client.py b/ipaclient/install/client.py +index 8acfa0cd1..0e478fa26 100644 +--- a/ipaclient/install/client.py ++++ b/ipaclient/install/client.py +@@ -24,6 +24,7 @@ import re + import SSSDConfig + import shutil + import socket ++import subprocess + import sys + import tempfile + import textwrap +@@ -2200,7 +2201,18 @@ def install_check(options): + "authentication resources", + rval=CLIENT_INSTALL_ERROR) + +- # when installing with '--no-sssd' option, check whether nss-ldap is ++ # When installing without the "--no-sudo" option, check whether sudo is ++ # available. ++ if options.conf_sudo: ++ try: ++ subprocess.Popen(['sudo -V']) ++ except FileNotFoundError: ++ logger.info( ++ "The sudo binary does not seem to be present on this " ++ "system. Please consider installing sudo if required." ++ ) ++ ++ # when installing with the '--no-sssd' option, check whether nss-ldap is + # installed + if not options.sssd: + if not os.path.exists(paths.PAM_KRB5_SO): +-- +2.29.2 + +From ee0ba2df41cf545b82d3d26e7e7e42447bb0f63e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com> +Date: Thu, 10 Dec 2020 07:55:16 +0200 +Subject: [PATCH] freeipa.spec: client: depend on libsss_sudo and sudo +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On 10.10+ releases of Dogtag, the PKI installer will not depend +on sudo anymore. This opens the possibility of creating IPA servers +without a properly configured sudo. +In fact, even IPA clients should have sudo and libsss_sudo installed +in most cases, so add a weak dependency on both of them to the client +subpackage. +Also make sure libsss_sudo is installed if sudo is present. + +Fixes: https://pagure.io/freeipa/issue/8530 +Signed-off-by: François Cami <fcami@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +Reviewed-By: Michal Polovka <mpolovka@redhat.com> +Reviewed-By: Florence Blanc-Renaud <frenaud@redhat.com> +--- + freeipa.spec.in | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/freeipa.spec.in b/freeipa.spec.in +index ba52a3834..93e473ac4 100755 +--- a/freeipa.spec.in ++++ b/freeipa.spec.in +@@ -640,6 +640,11 @@ Requires: nfs-utils + Requires: sssd-tools >= %{sssd_version} + Requires(post): policycoreutils + ++# https://pagure.io/freeipa/issue/8530 ++Recommends: libsss_sudo ++Recommends: sudo ++Requires: (libsss_sudo if sudo) ++ + Provides: %{alt_name}-client = %{version} + Conflicts: %{alt_name}-client + Obsoletes: %{alt_name}-client < %{version} +-- +2.29.2 + diff --git a/SOURCES/0002-ipatests-error-message-check-in-uninstall-log-for-KR_rhbz#1932289.patch b/SOURCES/0002-ipatests-error-message-check-in-uninstall-log-for-KR_rhbz#1932289.patch new file mode 100644 index 0000000..62e3fef --- /dev/null +++ b/SOURCES/0002-ipatests-error-message-check-in-uninstall-log-for-KR_rhbz#1932289.patch @@ -0,0 +1,60 @@ +From 6b25cd3241a5609b4d903d5697b8947fab403c90 Mon Sep 17 00:00:00 2001 +From: Kaleemullah Siddiqui <ksiddiqu@redhat.com> +Date: Wed, 17 Feb 2021 19:43:00 +0530 +Subject: [PATCH] ipatests: error message check in uninstall log for KRA + +This test checks that there is no error message in uninstall +log for KRA instance when IPA was installed with KRA. + +related: https://pagure.io/freeipa/issue/8550 + +Signed-off-by: Kaleemullah Siddiqui <ksiddiqu@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Rob Crittenden <rcritten@redhat.com> +--- + .../test_backup_and_restore.py | 22 ++++++++++++++++--- + 1 file changed, 19 insertions(+), 3 deletions(-) + +diff --git a/ipatests/test_integration/test_backup_and_restore.py b/ipatests/test_integration/test_backup_and_restore.py +index f13dfb5cb..6890ef201 100644 +--- a/ipatests/test_integration/test_backup_and_restore.py ++++ b/ipatests/test_integration/test_backup_and_restore.py +@@ -451,9 +451,11 @@ class BaseBackupAndRestoreWithKRA(IntegrationTest): + + backup_path = tasks.get_backup_dir(self.master) + +- self.master.run_command(['ipa-server-install', +- '--uninstall', +- '-U']) ++ # check that no error message in uninstall log for KRA instance ++ cmd = self.master.run_command(['ipa-server-install', ++ '--uninstall', ++ '-U']) ++ assert "failed to uninstall KRA" not in cmd.stderr_text + + if reinstall: + tasks.install_master(self.master, setup_dns=True) +@@ -482,6 +484,20 @@ class TestBackupReinstallRestoreWithKRA(BaseBackupAndRestoreWithKRA): + """backup, uninstall, reinstall, restore""" + self._full_backup_restore_with_vault(reinstall=True) + ++ def test_no_error_message_with_uninstall_ipa_with_kra(self): ++ """Test there is no error message in uninstall log for KRA instance ++ ++ There was error message in uninstall log when IPA with KRA was ++ uninstalled. This test check that there is no error message in ++ uninstall log for kra instance. ++ ++ related: https://pagure.io/freeipa/issue/8550 ++ """ ++ cmd = self.master.run_command(['ipa-server-install', ++ '--uninstall', ++ '-U']) ++ assert "failed to uninstall KRA" not in cmd.stderr_text ++ + + class TestBackupAndRestoreWithReplica(IntegrationTest): + """Regression tests for issues 7234 and 7455 +-- +2.29.2 + diff --git a/SOURCES/0003-ipatests-skip-tests-for-AD-trust-with-shared-secret-_rhbz#1932289.patch b/SOURCES/0003-ipatests-skip-tests-for-AD-trust-with-shared-secret-_rhbz#1932289.patch new file mode 100644 index 0000000..151805c --- /dev/null +++ b/SOURCES/0003-ipatests-skip-tests-for-AD-trust-with-shared-secret-_rhbz#1932289.patch @@ -0,0 +1,119 @@ +From 6d7b2d7d1b4711255ea72d62d27b5c5f4ec7c6e1 Mon Sep 17 00:00:00 2001 +From: Sergey Orlov <sorlov@redhat.com> +Date: Tue, 16 Feb 2021 12:32:55 +0100 +Subject: [PATCH] ipatests: skip tests for AD trust with shared secret in FIPS + mode + +Related to https://pagure.io/freeipa/issue/8715 + +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +--- + ipatests/test_integration/test_trust.py | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/ipatests/test_integration/test_trust.py b/ipatests/test_integration/test_trust.py +index 3e522617d..c8a348212 100644 +--- a/ipatests/test_integration/test_trust.py ++++ b/ipatests/test_integration/test_trust.py +@@ -5,6 +5,7 @@ from __future__ import absolute_import + import re + import textwrap + import time ++import functools + + import pytest + +@@ -13,6 +14,7 @@ from ipaplatform.paths import paths + + from ipatests.test_integration.base import IntegrationTest + from ipatests.pytest_ipa.integration import tasks ++from ipatests.pytest_ipa.integration import fips + from ipapython.dn import DN + from collections import namedtuple + from contextlib import contextmanager +@@ -20,6 +22,18 @@ from contextlib import contextmanager + TestDataRule = namedtuple('TestDataRule', + ['name', 'ruletype', 'user', 'subject']) + ++ ++def skip_in_fips_mode_due_to_issue_8715(test_method): ++ @functools.wraps(test_method) ++ def wrapper(instance): ++ if fips.is_fips_enabled(instance.master): ++ pytest.skip('Skipping in FIPS mode due to ' ++ 'https://pagure.io/freeipa/issue/8715') ++ else: ++ test_method(instance) ++ return wrapper ++ ++ + class BaseTestTrust(IntegrationTest): + num_clients = 1 + topology = 'line' +@@ -751,6 +765,7 @@ class TestTrust(BaseTestTrust): + + # Test for one-way forest trust with shared secret + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_establish_forest_trust_with_shared_secret(self): + tasks.configure_dns_for_trust(self.master, self.ad) + tasks.configure_windows_dns_for_trust(self.ad, self.master) +@@ -775,6 +790,7 @@ class TestTrust(BaseTestTrust): + tasks.establish_trust_with_ad( + self.master, self.ad_domain, shared_secret=self.shared_secret) + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_trustdomains_found_in_forest_trust_with_shared_secret(self): + result = self.master.run_command( + ['ipa', 'trust-fetch-domains', self.ad.domain.name], +@@ -783,6 +799,7 @@ class TestTrust(BaseTestTrust): + self.check_trustdomains( + self.ad_domain, [self.ad_domain, self.ad_subdomain]) + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_user_gid_uid_resolution_in_forest_trust_with_shared_secret(self): + """Check that user has SID-generated UID""" + # Using domain name since it is lowercased realm name for AD domains +@@ -801,6 +818,7 @@ class TestTrust(BaseTestTrust): + assert re.search( + testuser_regex, result.stdout_text), result.stdout_text + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_remove_forest_trust_with_shared_secret(self): + ps_cmd = ( + '[System.DirectoryServices.ActiveDirectory.Forest]' +@@ -823,6 +841,7 @@ class TestTrust(BaseTestTrust): + + # Test for one-way external trust with shared secret + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_establish_external_trust_with_shared_secret(self): + tasks.configure_dns_for_trust(self.master, self.ad) + tasks.configure_windows_dns_for_trust(self.ad, self.master) +@@ -838,6 +857,7 @@ class TestTrust(BaseTestTrust): + self.master, self.ad_domain, shared_secret=self.shared_secret, + extra_args=['--range-type', 'ipa-ad-trust', '--external=True']) + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_trustdomains_found_in_external_trust_with_shared_secret(self): + result = self.master.run_command( + ['ipa', 'trust-fetch-domains', self.ad.domain.name], +@@ -846,6 +866,7 @@ class TestTrust(BaseTestTrust): + self.check_trustdomains( + self.ad_domain, [self.ad_domain]) + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_user_uid_resolution_in_external_trust_with_shared_secret(self): + """Check that user has SID-generated UID""" + # Using domain name since it is lowercased realm name for AD domains +@@ -864,6 +885,7 @@ class TestTrust(BaseTestTrust): + assert re.search( + testuser_regex, result.stdout_text), result.stdout_text + ++ @skip_in_fips_mode_due_to_issue_8715 + def test_remove_external_trust_with_shared_secret(self): + self.ad.run_command( + ['netdom.exe', 'trust', self.master.domain.name, +-- +2.29.2 + diff --git a/SOURCES/0004-ipatests-ipa-cert-fix_pagure#8600_rhbz#1932289.patch b/SOURCES/0004-ipatests-ipa-cert-fix_pagure#8600_rhbz#1932289.patch new file mode 100644 index 0000000..fe28854 --- /dev/null +++ b/SOURCES/0004-ipatests-ipa-cert-fix_pagure#8600_rhbz#1932289.patch @@ -0,0 +1,347 @@ +From a0626e09b3eaf5d030982e2ff03e95841ad1b4b9 Mon Sep 17 00:00:00 2001 +From: Rob Crittenden <rcritten@redhat.com> +Date: Wed, 3 Feb 2021 15:52:05 -0500 +Subject: [PATCH] ipa-cert-fix: Don't hardcode the NSS certificate nickname + +The nickname of the 389-ds certificate was hardcoded as +Server-Cert which failed if the user had installed a +third-party certificate using ipa-server-certinstall. + +Instead pull the nickname from the DS configuration and +retrieve it based on that. + +https://pagure.io/freeipa/issue/8600 + +Signed-off-by: Rob Crittenden <rcritten@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +--- + ipaserver/install/ipa_cert_fix.py | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/ipaserver/install/ipa_cert_fix.py b/ipaserver/install/ipa_cert_fix.py +index 2f2c15613..29af89cd5 100644 +--- a/ipaserver/install/ipa_cert_fix.py ++++ b/ipaserver/install/ipa_cert_fix.py +@@ -203,9 +203,12 @@ def expired_ipa_certs(now): + certs.append((IPACertType.HTTPS, cert)) + + # LDAPS +- ds_dbdir = dsinstance.config_dirname(realm_to_serverid(api.env.realm)) ++ serverid = realm_to_serverid(api.env.realm) ++ ds = dsinstance.DsInstance(realm_name=api.env.realm) ++ ds_dbdir = dsinstance.config_dirname(serverid) ++ ds_nickname = ds.get_server_cert_nickname(serverid) + db = NSSDatabase(nssdir=ds_dbdir) +- cert = db.get_cert('Server-Cert') ++ cert = db.get_cert(ds_nickname) + if cert.not_valid_after <= now: + certs.append((IPACertType.LDAPS, cert)) + +@@ -344,11 +347,13 @@ def install_ipa_certs(subject_base, ca_subject_dn, certs): + elif certtype is IPACertType.HTTPS: + shutil.copyfile(cert_path, paths.HTTPD_CERT_FILE) + elif certtype is IPACertType.LDAPS: +- ds_dbdir = dsinstance.config_dirname( +- realm_to_serverid(api.env.realm)) ++ serverid = realm_to_serverid(api.env.realm) ++ ds = dsinstance.DsInstance(realm_name=api.env.realm) ++ ds_dbdir = dsinstance.config_dirname(serverid) + db = NSSDatabase(nssdir=ds_dbdir) +- db.delete_cert('Server-Cert') +- db.import_pem_cert('Server-Cert', EMPTY_TRUST_FLAGS, cert_path) ++ ds_nickname = ds.get_server_cert_nickname(serverid) ++ db.delete_cert(ds_nickname) ++ db.import_pem_cert(ds_nickname, EMPTY_TRUST_FLAGS, cert_path) + elif certtype is IPACertType.KDC: + shutil.copyfile(cert_path, paths.KDC_CERT) + +-- +2.29.2 + +From 660507fda2394b17d709c47a05ce5df548a47990 Mon Sep 17 00:00:00 2001 +From: Rob Crittenden <rcritten@redhat.com> +Date: Thu, 4 Feb 2021 08:25:48 -0500 +Subject: [PATCH] ipatests: test third-party 389-ds cert with ipa-cert-fix + +ipa-cert-fix was hardcoded to use Server-Cert as the nickname +so would fail if a third-party certificate was installed for DS. + +https://pagure.io/freeipa/issue/8600 + +Signed-off-by: Rob Crittenden <rcritten@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +--- + .../test_integration/test_ipa_cert_fix.py | 57 +++++++++++++++++++ + 1 file changed, 57 insertions(+) + +diff --git a/ipatests/test_integration/test_ipa_cert_fix.py b/ipatests/test_integration/test_ipa_cert_fix.py +index 2f7de5526..f9e5fe6e2 100644 +--- a/ipatests/test_integration/test_ipa_cert_fix.py ++++ b/ipatests/test_integration/test_ipa_cert_fix.py +@@ -11,6 +11,17 @@ import time + from ipaplatform.paths import paths + from ipatests.pytest_ipa.integration import tasks + from ipatests.test_integration.base import IntegrationTest ++from ipatests.test_integration.test_caless import CALessBase, ipa_certs_cleanup ++ ++ ++def server_install_teardown(func): ++ def wrapped(*args): ++ master = args[0].master ++ try: ++ func(*args) ++ finally: ++ ipa_certs_cleanup(master) ++ return wrapped + + + class TestIpaCertFix(IntegrationTest): +@@ -94,3 +105,49 @@ class TestIpaCertFix(IntegrationTest): + else: + # timeout + raise AssertionError('Timeout: Failed to renew all the certs') ++ ++ ++class TestIpaCertFixThirdParty(CALessBase): ++ """ ++ Test that ipa-cert-fix works with an installation with custom certs. ++ """ ++ ++ @classmethod ++ def install(cls, mh): ++ cls.nickname = 'ca1/server' ++ ++ super(TestIpaCertFixThirdParty, cls).install(mh) ++ tasks.install_master(cls.master, setup_dns=True) ++ ++ @server_install_teardown ++ def test_third_party_certs(self): ++ self.create_pkcs12(self.nickname, ++ password=self.cert_password, ++ filename='server.p12') ++ self.prepare_cacert('ca1') ++ ++ # We have a chain length of one. If this is extended then the ++ # additional cert names will need to be calculated. ++ nick_chain = self.nickname.split('/') ++ ca_cert = '%s.crt' % nick_chain[0] ++ ++ # Add the CA to the IPA store ++ self.copy_cert(self.master, ca_cert) ++ self.master.run_command(['ipa-cacert-manage', 'install', ca_cert]) ++ ++ # Apply the new cert chain otherwise ipa-server-certinstall will fail ++ self.master.run_command(['ipa-certupdate']) ++ ++ # Install the updated certs and restart the world ++ self.copy_cert(self.master, 'server.p12') ++ args = ['ipa-server-certinstall', ++ '-p', self.master.config.dirman_password, ++ '--pin', self.master.config.admin_password, ++ '-d', 'server.p12'] ++ self.master.run_command(args) ++ self.master.run_command(['ipactl', 'restart',]) ++ ++ # Run ipa-cert-fix. This is basically a no-op but tests that ++ # the DS nickname is used and not a hardcoded value. ++ result = self.master.run_command(['ipa-cert-fix', '-v'],) ++ assert self.nickname in result.stderr_text +-- +2.29.2 + +From 4cb6f0ba0df928eea60b20892a6fc85373627946 Mon Sep 17 00:00:00 2001 +From: Rob Crittenden <rcritten@redhat.com> +Date: Fri, 5 Feb 2021 09:00:54 -0500 +Subject: [PATCH] Set pki-core dependency to 10.3.3 for pki-server cert-fix bug + +Related: https://github.com/dogtagpki/pki/issues/3387 +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +--- + freeipa.spec.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/freeipa.spec.in b/freeipa.spec.in +index 93e473ac4..0e261285b 100755 +--- a/freeipa.spec.in ++++ b/freeipa.spec.in +@@ -128,11 +128,11 @@ + %if 0%{?rhel} == 8 + # PKIConnection has been modified to always validate certs. + # https://pagure.io/freeipa/issue/8379 +-%global pki_version 10.9.0-0.4 ++%global pki_version 10.10.4-1 + %else + # New KRA profile, ACME support + # https://pagure.io/freeipa/issue/8545 +-%global pki_version 10.10.0-2 ++%global pki_version 10.10.3-1 + %endif + + # RHEL 8.3+, F32+ has 0.79.13 +-- +2.29.2 + +From f3463728f2196589d36e14cedccb26c03730a7c0 Mon Sep 17 00:00:00 2001 +From: Rob Crittenden <rcritten@redhat.com> +Date: Wed, 10 Feb 2021 16:07:13 -0500 +Subject: [PATCH] Don't renew non-IPA issued certs in ipa-cert-fix + +If the Apache, 389-ds or KDC certificate was issued by +a third party there is nothing we can do, regardless of +whether it is expired or not. + +Report which certificates will not be renewed so the +admin can manually do do (likely in the event of a +third-party certificate). + +https://pagure.io/freeipa/issue/8600 + +Signed-off-by: Rob Crittenden <rcritten@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +--- + ipaserver/install/ipa_cert_fix.py | 53 +++++++++++++++++++++++++------ + 1 file changed, 43 insertions(+), 10 deletions(-) + +diff --git a/ipaserver/install/ipa_cert_fix.py b/ipaserver/install/ipa_cert_fix.py +index 29af89cd5..210cf80f1 100644 +--- a/ipaserver/install/ipa_cert_fix.py ++++ b/ipaserver/install/ipa_cert_fix.py +@@ -43,6 +43,7 @@ from ipapython.certdb import NSSDatabase, EMPTY_TRUST_FLAGS + from ipapython.dn import DN + from ipapython.ipaldap import realm_to_serverid + from ipaserver.install import ca, cainstance, dsinstance ++from ipaserver.install.certs import is_ipa_issued_cert + from ipapython import directivesetter + from ipapython import ipautil + +@@ -104,6 +105,13 @@ class IPACertFix(AdminTool): + + api.bootstrap(in_server=True, confdir=paths.ETC_IPA) + api.finalize() ++ ++ if not dsinstance.is_ds_running(realm_to_serverid(api.env.realm)): ++ print( ++ "The LDAP server is not running; cannot proceed." ++ ) ++ return 1 ++ + api.Backend.ldap2.connect() # ensure DS is up + + subject_base = dsinstance.DsInstance().find_subject_base() +@@ -113,7 +121,7 @@ class IPACertFix(AdminTool): + ca_subject_dn = ca.lookup_ca_subject(api, subject_base) + + now = datetime.datetime.now() + datetime.timedelta(weeks=2) +- certs, extra_certs = expired_certs(now) ++ certs, extra_certs, non_renewed = expired_certs(now) + + if not certs and not extra_certs: + print("Nothing to do.") +@@ -121,7 +129,7 @@ class IPACertFix(AdminTool): + + print(msg) + +- print_intentions(certs, extra_certs) ++ print_intentions(certs, extra_certs, non_renewed) + + response = ipautil.user_input('Enter "yes" to proceed') + if response.lower() != 'yes': +@@ -133,7 +141,10 @@ class IPACertFix(AdminTool): + fix_certreq_directives(certs) + run_cert_fix(certs, extra_certs) + except ipautil.CalledProcessError: +- if any(x[0] is IPACertType.LDAPS for x in extra_certs): ++ if any( ++ x[0] is IPACertType.LDAPS ++ for x in extra_certs + non_renewed ++ ): + # The DS cert was expired. This will cause + # 'pki-server cert-fix' to fail at the final + # restart. Therefore ignore the CalledProcessError +@@ -152,13 +163,15 @@ class IPACertFix(AdminTool): + print("Becoming renewal master.") + cainstance.CAInstance().set_renewal_master() + ++ print("Restarting IPA") + ipautil.run(['ipactl', 'restart'], raiseonerr=True) + + return 0 + + + def expired_certs(now): +- return expired_dogtag_certs(now), expired_ipa_certs(now) ++ expired_ipa, non_renew_ipa = expired_ipa_certs(now) ++ return expired_dogtag_certs(now), expired_ipa, non_renew_ipa + + + def expired_dogtag_certs(now): +@@ -191,6 +204,7 @@ def expired_ipa_certs(now): + + """ + certs = [] ++ non_renewed = [] + + # IPA RA + cert = x509.load_certificate_from_file(paths.RA_AGENT_PEM) +@@ -200,7 +214,10 @@ def expired_ipa_certs(now): + # Apache HTTPD + cert = x509.load_certificate_from_file(paths.HTTPD_CERT_FILE) + if cert.not_valid_after <= now: +- certs.append((IPACertType.HTTPS, cert)) ++ if not is_ipa_issued_cert(api, cert): ++ non_renewed.append((IPACertType.HTTPS, cert)) ++ else: ++ certs.append((IPACertType.HTTPS, cert)) + + # LDAPS + serverid = realm_to_serverid(api.env.realm) +@@ -210,18 +227,24 @@ def expired_ipa_certs(now): + db = NSSDatabase(nssdir=ds_dbdir) + cert = db.get_cert(ds_nickname) + if cert.not_valid_after <= now: +- certs.append((IPACertType.LDAPS, cert)) ++ if not is_ipa_issued_cert(api, cert): ++ non_renewed.append((IPACertType.LDAPS, cert)) ++ else: ++ certs.append((IPACertType.LDAPS, cert)) + + # KDC + cert = x509.load_certificate_from_file(paths.KDC_CERT) + if cert.not_valid_after <= now: +- certs.append((IPACertType.KDC, cert)) ++ if not is_ipa_issued_cert(api, cert): ++ non_renewed.append((IPACertType.HTTPS, cert)) ++ else: ++ certs.append((IPACertType.KDC, cert)) + +- return certs ++ return certs, non_renewed + + +-def print_intentions(dogtag_certs, ipa_certs): +- print("The following certificates will be renewed: ") ++def print_intentions(dogtag_certs, ipa_certs, non_renewed): ++ print("The following certificates will be renewed:") + print() + + for certid, cert in dogtag_certs: +@@ -230,6 +253,16 @@ def print_intentions(dogtag_certs, ipa_certs): + for certtype, cert in ipa_certs: + print_cert_info("IPA", certtype.value, cert) + ++ if non_renewed: ++ print( ++ "The following certificates will NOT be renewed because " ++ "they were not issued by the IPA CA:" ++ ) ++ print() ++ ++ for certtype, cert in non_renewed: ++ print_cert_info("IPA", certtype.value, cert) ++ + + def print_cert_info(context, desc, cert): + print("{} {} certificate:".format(context, desc)) +-- +2.29.2 + diff --git a/SOURCES/0005-ipatests-test-Samba-mount-with-NTLM-authentication_rhbz#1932289.patch b/SOURCES/0005-ipatests-test-Samba-mount-with-NTLM-authentication_rhbz#1932289.patch new file mode 100644 index 0000000..ed56ec8 --- /dev/null +++ b/SOURCES/0005-ipatests-test-Samba-mount-with-NTLM-authentication_rhbz#1932289.patch @@ -0,0 +1,135 @@ +From 80ccac79b9d123e158a5ba60f9853611d0854188 Mon Sep 17 00:00:00 2001 +From: Sergey Orlov <sorlov@redhat.com> +Date: Wed, 17 Feb 2021 16:48:33 +0100 +Subject: [PATCH] ipatests: test Samba mount with NTLM authentication + +Related to https://pagure.io/freeipa/issue/8636 + +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +--- + ipatests/pytest_ipa/integration/__init__.py | 17 ++++++ + ipatests/test_integration/test_smb.py | 63 +++++++++++++++++++++ + 2 files changed, 80 insertions(+) + +diff --git a/ipatests/pytest_ipa/integration/__init__.py b/ipatests/pytest_ipa/integration/__init__.py +index 55291ae8b..f62b667bd 100644 +--- a/ipatests/pytest_ipa/integration/__init__.py ++++ b/ipatests/pytest_ipa/integration/__init__.py +@@ -28,12 +28,14 @@ import os + import tempfile + import shutil + import re ++import functools + + import pytest + from pytest_multihost import make_multihost_fixture + + from ipapython import ipautil + from ipaplatform.paths import paths ++from . import fips + from .config import Config + from .env_config import get_global_config + from . import tasks +@@ -478,3 +480,18 @@ def del_compat_attrs(cls): + del cls.ad_subdomains + del cls.ad_treedomains + del cls.ad_domains ++ ++ ++def skip_if_fips(reason='Not supported in FIPS mode', host='master'): ++ if callable(reason): ++ raise TypeError('Invalid decorator usage, add "()"') ++ ++ def decorator(test_method): ++ @functools.wraps(test_method) ++ def wrapper(instance, *args, **kwargs): ++ if fips.is_fips_enabled(getattr(instance, host)): ++ pytest.skip(reason) ++ else: ++ test_method(instance, *args, **kwargs) ++ return wrapper ++ return decorator +diff --git a/ipatests/test_integration/test_smb.py b/ipatests/test_integration/test_smb.py +index 37725ab15..749a96325 100644 +--- a/ipatests/test_integration/test_smb.py ++++ b/ipatests/test_integration/test_smb.py +@@ -19,6 +19,7 @@ from ipatests.test_integration.base import IntegrationTest + from ipatests.pytest_ipa.integration import tasks + from ipaplatform.osinfo import osinfo + from ipaplatform.paths import paths ++from ipatests.pytest_ipa.integration import skip_if_fips + + + def wait_smbd_functional(host): +@@ -378,6 +379,68 @@ class TestSMB(IntegrationTest): + finally: + self.cleanup_mount(mountpoint) + ++ def check_repeated_smb_mount(self, options): ++ mountpoint = '/mnt/smb' ++ unc = '//{}/homes'.format(self.smbserver.hostname) ++ test_file = 'ntlm_test' ++ test_file_server_path = '/home/{}/{}'.format(self.ipa_user1, test_file) ++ test_file_client_path = '{}/{}'.format(mountpoint, test_file) ++ ++ self.smbclient.run_command(['mkdir', '-p', mountpoint]) ++ self.smbserver.put_file_contents(test_file_server_path, '') ++ try: ++ for i in [1, 2]: ++ res = self.smbclient.run_command([ ++ 'mount', '-t', 'cifs', unc, mountpoint, '-o', options], ++ raiseonerr=False) ++ assert res.returncode == 0, ( ++ 'Mount failed at iteration {}. Output: {}' ++ .format(i, res.stdout_text + res.stderr_text)) ++ assert self.smbclient.transport.file_exists( ++ test_file_client_path) ++ self.smbclient.run_command(['umount', mountpoint]) ++ finally: ++ self.cleanup_mount(mountpoint) ++ self.smbserver.run_command(['rm', '-f', test_file_server_path]) ++ ++ @skip_if_fips() ++ def test_ntlm_authentication_with_auto_domain(self): ++ """Repeatedly try to authenticate with username and password with ++ automatic domain discovery. ++ ++ This is a regression test for https://pagure.io/freeipa/issue/8636 ++ """ ++ tasks.kdestroy_all(self.smbclient) ++ ++ mount_options = 'user={user},pass={password},domainauto'.format( ++ user=self.ipa_user1, ++ password=self.ipa_user1_password ++ ) ++ ++ self.check_repeated_smb_mount(mount_options) ++ ++ @skip_if_fips() ++ def test_ntlm_authentication_with_upn_with_lowercase_domain(self): ++ tasks.kdestroy_all(self.smbclient) ++ ++ mount_options = 'user={user}@{domain},pass={password}'.format( ++ user=self.ipa_user1, ++ password=self.ipa_user1_password, ++ domain=self.master.domain.name.lower() ++ ) ++ self.check_repeated_smb_mount(mount_options) ++ ++ @skip_if_fips() ++ def test_ntlm_authentication_with_upn_with_uppercase_domain(self): ++ tasks.kdestroy_all(self.smbclient) ++ ++ mount_options = 'user={user}@{domain},pass={password}'.format( ++ user=self.ipa_user1, ++ password=self.ipa_user1_password, ++ domain=self.master.domain.name.upper() ++ ) ++ self.check_repeated_smb_mount(mount_options) ++ + def test_uninstall_samba(self): + self.smbserver.run_command(['ipa-client-samba', '--uninstall', '-U']) + res = self.smbserver.run_command( +-- +2.29.2 + diff --git a/SOURCES/0006-ipatests_do_not_ignore_zonemgr_pagure#8718_rhbz#1932289.patch b/SOURCES/0006-ipatests_do_not_ignore_zonemgr_pagure#8718_rhbz#1932289.patch new file mode 100644 index 0000000..8663740 --- /dev/null +++ b/SOURCES/0006-ipatests_do_not_ignore_zonemgr_pagure#8718_rhbz#1932289.patch @@ -0,0 +1,79 @@ +From 20bb855a57080145d0d5555294381c890ef605bb Mon Sep 17 00:00:00 2001 +From: Antonio Torres <antorres@redhat.com> +Date: Tue, 16 Feb 2021 16:53:24 +0100 +Subject: [PATCH] ipaserver: don't ignore zonemgr option on install + +Fix zonemgr option in ipaserver install being +ignored because of an incorrect condition. + +Fixes: https://pagure.io/freeipa/issue/8718 +Signed-off-by: Antonio Torres <antorres@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +--- + ipaserver/install/bindinstance.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ipaserver/install/bindinstance.py b/ipaserver/install/bindinstance.py +index 3b446ce76..19941cd00 100644 +--- a/ipaserver/install/bindinstance.py ++++ b/ipaserver/install/bindinstance.py +@@ -355,7 +355,7 @@ def add_zone(name, zonemgr=None, dns_backup=None, ns_hostname=None, + else: + update_policy = get_dns_forward_zone_update_policy(api.env.realm) + +- if zonemgr is None: ++ if not zonemgr: + zonemgr = 'hostmaster.%s' % name + + if ns_hostname: +@@ -682,7 +682,7 @@ class BindInstance(service.Service): + self.forward_policy = forward_policy + self.reverse_zones = reverse_zones + +- if zonemgr is not None: ++ if not zonemgr: + self.zonemgr = 'hostmaster.%s' % normalize_zone(self.domain) + else: + self.zonemgr = normalize_zonemgr(zonemgr) +-- +2.29.2 + +From 82043e1fd052618608d3b7786473a632478795ee Mon Sep 17 00:00:00 2001 +From: Antonio Torres <antorres@redhat.com> +Date: Tue, 16 Feb 2021 18:24:26 +0100 +Subject: [PATCH] ipatests: check that zonemgr is set correctly during server + install + +Add test to check that zonemgr is correctly +set when installing IPA server. + +Related: https://pagure.io/freeipa/issue/8718 +Signed-off-by: Antonio Torres <antorres@redhat.com> +Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +--- + ipatests/test_integration/test_installation.py | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/ipatests/test_integration/test_installation.py b/ipatests/test_integration/test_installation.py +index 6e8af024c..18c5bd243 100644 +--- a/ipatests/test_integration/test_installation.py ++++ b/ipatests/test_integration/test_installation.py +@@ -1171,6 +1171,13 @@ class TestInstallMasterDNS(IntegrationTest): + extra_args=['--zonemgr', 'me@example.org'], + ) + ++ tasks.kinit_admin(self.master) ++ result = self.master.run_command( ++ ['ipa', 'dnszone-show', self.master.domain.name] ++ ).stdout_text ++ ++ assert "Administrator e-mail address: me.example.org" in result ++ + def test_server_install_lock_bind_recursion(self): + """Test if server installer lock Bind9 recursion + +-- +2.29.2 + diff --git a/SOURCES/0007-ipatests_ipa-cert-fix_renews_pagure#7885_rhbz#1932289.patch b/SOURCES/0007-ipatests_ipa-cert-fix_renews_pagure#7885_rhbz#1932289.patch new file mode 100644 index 0000000..0531b15 --- /dev/null +++ b/SOURCES/0007-ipatests_ipa-cert-fix_renews_pagure#7885_rhbz#1932289.patch @@ -0,0 +1,318 @@ +From 7f30ddb1b7e30c22f9b7d14d2658b58a0ea6b459 Mon Sep 17 00:00:00 2001 +From: Mohammad Rizwan <myusuf@redhat.com> +Date: Tue, 2 Feb 2021 17:33:57 +0530 +Subject: [PATCH] ipatests: Test if ipa-cert-fix renews expired certs + +Test moves system date to expire certs. Then calls ipa-cert-fix +to renew them. This certs include subsystem, audit-signing, +OCSP signing, Dogtag HTTPS, IPA RA agent, LDAP and KDC certs. + +related: https://pagure.io/freeipa/issue/7885 + +Signed-off-by: Mohammad Rizwan <myusuf@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Anuja More <amore@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Anuja More <amore@redhat.com> +--- + .../test_integration/test_ipa_cert_fix.py | 60 +++++++++++++++++++ + 1 file changed, 60 insertions(+) + +diff --git a/ipatests/test_integration/test_ipa_cert_fix.py b/ipatests/test_integration/test_ipa_cert_fix.py +index f9e5fe6e2..da68af573 100644 +--- a/ipatests/test_integration/test_ipa_cert_fix.py ++++ b/ipatests/test_integration/test_ipa_cert_fix.py +@@ -8,12 +8,16 @@ Module provides tests for ipa-cert-fix CLI. + import pytest + import time + ++import logging + from ipaplatform.paths import paths + from ipatests.pytest_ipa.integration import tasks + from ipatests.test_integration.base import IntegrationTest + from ipatests.test_integration.test_caless import CALessBase, ipa_certs_cleanup + + ++logger = logging.getLogger(__name__) ++ ++ + def server_install_teardown(func): + def wrapped(*args): + master = args[0].master +@@ -24,6 +28,26 @@ def server_install_teardown(func): + return wrapped + + ++def check_status(host, cert_count, state, timeout=600): ++ """Helper method to check that if all the certs are in given state ++ :param host: the host ++ :param cert_count: no of cert to look for ++ :param state: state to check for ++ :param timeout: max time in seconds to wait for the state ++ """ ++ for _i in range(0, timeout, 10): ++ result = host.run_command(['getcert', 'list']) ++ count = result.stdout_text.count(f"status: {state}") ++ logger.info("cert count in %s state : %s", state, count) ++ if int(count) == cert_count: ++ break ++ time.sleep(10) ++ else: ++ raise RuntimeError("request timed out") ++ ++ return count ++ ++ + class TestIpaCertFix(IntegrationTest): + @classmethod + def uninstall(cls, mh): +@@ -106,6 +130,42 @@ class TestIpaCertFix(IntegrationTest): + # timeout + raise AssertionError('Timeout: Failed to renew all the certs') + ++ def test_renew_expired_cert_on_master(self, expire_cert_critical): ++ """Test if ipa-cert-fix renews expired certs ++ ++ Test moves system date to expire certs. Then calls ipa-cert-fix ++ to renew them. This certs include subsystem, audit-signing, ++ OCSP signing, Dogtag HTTPS, IPA RA agent, LDAP and KDC certs. ++ ++ related: https://pagure.io/freeipa/issue/7885 ++ """ ++ # wait for cert expiry ++ check_status(self.master, 8, "CA_UNREACHABLE") ++ ++ self.master.run_command(['ipa-cert-fix', '-v'], stdin_text='yes\n') ++ ++ check_status(self.master, 9, "MONITORING") ++ ++ # second iteration of ipa-cert-fix ++ result = self.master.run_command( ++ ['ipa-cert-fix', '-v'], ++ stdin_text='yes\n' ++ ) ++ assert "Nothing to do" in result.stdout_text ++ check_status(self.master, 9, "MONITORING") ++ ++ def test_ipa_cert_fix_non_ipa(self): ++ """Test ipa-cert-fix doesn't work on non ipa system ++ ++ ipa-cert-fix tool should not work on non ipa system. ++ ++ related: https://pagure.io/freeipa/issue/7885 ++ """ ++ result = self.master.run_command(['ipa-cert-fix', '-v'], ++ stdin_text='yes\n', ++ raiseonerr=False) ++ assert result.returncode == 2 ++ + + class TestIpaCertFixThirdParty(CALessBase): + """ +-- +2.29.2 + +From 36a60dbb35cb4429f00528f79bec8b7982a30c74 Mon Sep 17 00:00:00 2001 +From: Mohammad Rizwan <myusuf@redhat.com> +Date: Thu, 11 Feb 2021 16:54:22 +0530 +Subject: [PATCH] Move fixture outside the class and add setup_kra capability + +Moved fixture to use across multiple classes. Added capability +to install the KRA to the fixture + +Signed-off-by: Mohammad Rizwan <myusuf@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Anuja More <amore@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Anuja More <amore@redhat.com> +--- + .../test_integration/test_ipa_cert_fix.py | 46 ++++++++++++------- + 1 file changed, 30 insertions(+), 16 deletions(-) + +diff --git a/ipatests/test_integration/test_ipa_cert_fix.py b/ipatests/test_integration/test_ipa_cert_fix.py +index da68af573..591dc5031 100644 +--- a/ipatests/test_integration/test_ipa_cert_fix.py ++++ b/ipatests/test_integration/test_ipa_cert_fix.py +@@ -48,6 +48,33 @@ def check_status(host, cert_count, state, timeout=600): + return count + + ++@pytest.fixture ++def expire_cert_critical(): ++ """ ++ Fixture to expire the certs by moving the system date using ++ date -s command and revert it back ++ """ ++ ++ hosts = dict() ++ ++ def _expire_cert_critical(host, setup_kra=False): ++ hosts['host'] = host ++ # Do not install NTP as the test plays with the date ++ tasks.install_master(host, setup_dns=False, ++ extra_args=['--no-ntp']) ++ if setup_kra: ++ tasks.install_kra(host) ++ host.run_command(['systemctl', 'stop', 'chronyd']) ++ host.run_command(['date', '-s', '+3Years+1day']) ++ ++ yield _expire_cert_critical ++ ++ host = hosts.pop('host') ++ tasks.uninstall_master(host) ++ host.run_command(['date', '-s', '-3Years-1day']) ++ host.run_command(['systemctl', 'start', 'chronyd']) ++ ++ + class TestIpaCertFix(IntegrationTest): + @classmethod + def uninstall(cls, mh): +@@ -55,22 +82,6 @@ class TestIpaCertFix(IntegrationTest): + # the fixture + pass + +- @pytest.fixture +- def expire_cert_critical(self): +- """ +- Fixture to expire the certs by moving the system date using +- date -s command and revert it back +- """ +- # Do not install NTP as the test plays with the date +- tasks.install_master(self.master, setup_dns=False, +- extra_args=['--no-ntp']) +- self.master.run_command(['systemctl', 'stop', 'chronyd']) +- self.master.run_command(['date','-s', '+3Years+1day']) +- yield +- tasks.uninstall_master(self.master) +- self.master.run_command(['date','-s', '-3Years-1day']) +- self.master.run_command(['systemctl', 'start', 'chronyd']) +- + def test_missing_csr(self, expire_cert_critical): + """ + Test that ipa-cert-fix succeeds when CSR is missing from CS.cfg +@@ -82,6 +93,7 @@ class TestIpaCertFix(IntegrationTest): + - call getcert resubmit in order to create the CSR in certmonger file + - use ipa-cert-fix, no issue should be seen + """ ++ expire_cert_critical(self.master) + # pki must be stopped in order to edit CS.cfg + self.master.run_command(['ipactl', 'stop']) + self.master.run_command(['sed', '-i', r'/ca\.sslserver\.certreq=/d', +@@ -139,6 +151,8 @@ class TestIpaCertFix(IntegrationTest): + + related: https://pagure.io/freeipa/issue/7885 + """ ++ expire_cert_critical(self.master) ++ + # wait for cert expiry + check_status(self.master, 8, "CA_UNREACHABLE") + +-- +2.29.2 + +From c84e0547e1a693ba0e9edbfeea7bafdb2fb2b4a2 Mon Sep 17 00:00:00 2001 +From: Mohammad Rizwan <myusuf@redhat.com> +Date: Thu, 11 Feb 2021 16:59:53 +0530 +Subject: [PATCH] ipatests: Test if ipa-cert-fix renews expired certs with kra + installed + +This test check if ipa-cert-fix renews certs with kra +certificate installed. + +related: https://pagure.io/freeipa/issue/7885 + +Signed-off-by: Mohammad Rizwan <myusuf@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Anuja More <amore@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Anuja More <amore@redhat.com> +--- + .../test_integration/test_ipa_cert_fix.py | 25 +++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/ipatests/test_integration/test_ipa_cert_fix.py b/ipatests/test_integration/test_ipa_cert_fix.py +index 591dc5031..b2e92d4dc 100644 +--- a/ipatests/test_integration/test_ipa_cert_fix.py ++++ b/ipatests/test_integration/test_ipa_cert_fix.py +@@ -225,3 +225,28 @@ class TestIpaCertFixThirdParty(CALessBase): + # the DS nickname is used and not a hardcoded value. + result = self.master.run_command(['ipa-cert-fix', '-v'],) + assert self.nickname in result.stderr_text ++ ++ ++class TestCertFixKRA(IntegrationTest): ++ @classmethod ++ def uninstall(cls, mh): ++ # Uninstall method is empty as the uninstallation is done in ++ # the fixture ++ pass ++ ++ def test_renew_expired_cert_with_kra(self, expire_cert_critical): ++ """Test if ipa-cert-fix renews expired certs with kra installed ++ ++ This test check if ipa-cert-fix renews certs with kra ++ certificate installed. ++ ++ related: https://pagure.io/freeipa/issue/7885 ++ """ ++ expire_cert_critical(self.master, setup_kra=True) ++ ++ # check if all subsystem cert expired ++ check_status(self.master, 11, "CA_UNREACHABLE") ++ ++ self.master.run_command(['ipa-cert-fix', '-v'], stdin_text='yes\n') ++ ++ check_status(self.master, 12, "MONITORING") +-- +2.29.2 + +From 260fbcb03297ef1ed5418b16c0df0587d2989b22 Mon Sep 17 00:00:00 2001 +From: Mohammad Rizwan <myusuf@redhat.com> +Date: Tue, 2 Mar 2021 11:42:36 +0530 +Subject: [PATCH] ipatests: update nightly definition for ipa_cert_fix suite + +Signed-off-by: Mohammad Rizwan <myusuf@redhat.com> +Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> +Reviewed-By: Anuja More <amore@redhat.com> +--- + ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml | 2 +- + ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml | 2 +- + ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml b/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml +index ebd539246..8a88698eb 100644 +--- a/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml ++++ b/ipatests/prci_definitions/nightly_ipa-4-9_latest.yaml +@@ -1687,5 +1687,5 @@ jobs: + build_url: '{fedora-latest-ipa-4-9/build_url}' + test_suite: test_integration/test_ipa_cert_fix.py + template: *ci-ipa-4-9-latest +- timeout: 3600 ++ timeout: 7200 + topology: *master_1repl +diff --git a/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml b/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml +index d4b597d6e..14f0c4292 100644 +--- a/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml ++++ b/ipatests/prci_definitions/nightly_ipa-4-9_latest_selinux.yaml +@@ -1821,5 +1821,5 @@ jobs: + selinux_enforcing: True + test_suite: test_integration/test_ipa_cert_fix.py + template: *ci-ipa-4-9-latest +- timeout: 3600 ++ timeout: 7200 + topology: *master_1repl +diff --git a/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml b/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml +index 1fd589e6a..b7f8d2b3e 100644 +--- a/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml ++++ b/ipatests/prci_definitions/nightly_ipa-4-9_previous.yaml +@@ -1687,5 +1687,5 @@ jobs: + build_url: '{fedora-previous-ipa-4-9/build_url}' + test_suite: test_integration/test_ipa_cert_fix.py + template: *ci-ipa-4-9-previous +- timeout: 3600 ++ timeout: 7200 + topology: *master_1repl +-- +2.29.2 + diff --git a/SOURCES/0008-ipatests-use-whole-date-when-calling-journalctl-sinc_rhbz#1932289.patch b/SOURCES/0008-ipatests-use-whole-date-when-calling-journalctl-sinc_rhbz#1932289.patch new file mode 100644 index 0000000..a4e36a9 --- /dev/null +++ b/SOURCES/0008-ipatests-use-whole-date-when-calling-journalctl-sinc_rhbz#1932289.patch @@ -0,0 +1,37 @@ +From caf748860860293e010e695d72f6b3b3d8509f8a Mon Sep 17 00:00:00 2001 +From: Florence Blanc-Renaud <flo@redhat.com> +Date: Tue, 2 Mar 2021 08:44:35 +0100 +Subject: [PATCH] ipatests: use whole date when calling journalctl --since + +The test test_commands.py::TestIPACommand::test_ssh_key_connection +is checking the content of the journal using journalctl --since ... +but provides only the time, not the whole date with year-month-day. +As a consequence, if the test is executed around midnight it may +find nothing in the journal because it's looking for logs after 11:50PM, +which is a date in the future. + +The fix provides a complete date with year-month-day hours:min:sec. + +Fixes: https://pagure.io/freeipa/issue/8728 +Reviewed-By: Francois Cami <fcami@redhat.com> +--- + ipatests/test_integration/test_commands.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/ipatests/test_integration/test_commands.py b/ipatests/test_integration/test_commands.py +index 45f642bf2..b7ffb926f 100644 +--- a/ipatests/test_integration/test_commands.py ++++ b/ipatests/test_integration/test_commands.py +@@ -642,7 +642,8 @@ class TestIPACommand(IntegrationTest): + # start to look at logs a bit before "now" + # https://pagure.io/freeipa/issue/8432 + since = time.strftime( +- '%H:%M:%S', (datetime.now() - timedelta(seconds=10)).timetuple() ++ '%Y-%m-%d %H:%M:%S', ++ (datetime.now() - timedelta(seconds=10)).timetuple() + ) + + tasks.run_ssh_cmd( +-- +2.29.2 + diff --git a/SOURCES/0009-ipa-kdb-do-not-use-OpenLDAP-functions-with-NULL-LDAP_rhbz#1932784.patch b/SOURCES/0009-ipa-kdb-do-not-use-OpenLDAP-functions-with-NULL-LDAP_rhbz#1932784.patch new file mode 100644 index 0000000..128c9c4 --- /dev/null +++ b/SOURCES/0009-ipa-kdb-do-not-use-OpenLDAP-functions-with-NULL-LDAP_rhbz#1932784.patch @@ -0,0 +1,594 @@ +From 2832810891acfaca68142df7271d6f0a50a588eb Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Fri, 19 Feb 2021 15:37:47 +0200 +Subject: [PATCH] ipa-kdb: do not use OpenLDAP functions with NULL LDAP context + +Calling to ipadb_get_connection() will remove LDAP context if any error +happens. This means upper layers must always verify that LDAP context +exists after such calls. + +ipadb_get_user_auth() may re-read global configuration and that may fail +and cause IPA context to have NULL LDAP context. + +Fixes: https://pagure.io/freeipa/issue/8681 + +Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Robbie Harwood <rharwood@redhat.com> +Reviewed-By: Rob Crittenden <rcritten@redhat.com> +--- + daemons/ipa-kdb/ipa_kdb.c | 1 + + daemons/ipa-kdb/ipa_kdb_mspac.c | 32 +++++++++++++++------------- + daemons/ipa-kdb/ipa_kdb_principals.c | 26 ++++++++++++++++------ + 3 files changed, 37 insertions(+), 22 deletions(-) + +diff --git a/daemons/ipa-kdb/ipa_kdb.c b/daemons/ipa-kdb/ipa_kdb.c +index 43ba955ac..6e1e3e351 100644 +--- a/daemons/ipa-kdb/ipa_kdb.c ++++ b/daemons/ipa-kdb/ipa_kdb.c +@@ -57,6 +57,7 @@ static void ipadb_context_free(krb5_context kcontext, + /* ldap free lcontext */ + if ((*ctx)->lcontext) { + ldap_unbind_ext_s((*ctx)->lcontext, NULL, NULL); ++ (*ctx)->lcontext = NULL; + } + free((*ctx)->supp_encs); + free((*ctx)->def_encs); +diff --git a/daemons/ipa-kdb/ipa_kdb_mspac.c b/daemons/ipa-kdb/ipa_kdb_mspac.c +index 31f617129..81a8fd483 100644 +--- a/daemons/ipa-kdb/ipa_kdb_mspac.c ++++ b/daemons/ipa-kdb/ipa_kdb_mspac.c +@@ -418,7 +418,6 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + krb5_timestamp authtime, + struct netr_SamInfo3 *info3) + { +- LDAP *lcontext = ipactx->lcontext; + LDAPDerefRes *deref_results = NULL; + struct dom_sid sid; + gid_t prigid = -1; +@@ -435,7 +434,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + bool is_idobject = false; + krb5_principal princ; + +- ret = ipadb_ldap_attr_to_strlist(lcontext, lentry, "objectClass", ++ ret = ipadb_ldap_attr_to_strlist(ipactx->lcontext, lentry, "objectClass", + &objectclasses); + if (ret == 0 && objectclasses != NULL) { + for (c = 0; objectclasses[c] != NULL; c++) { +@@ -472,13 +471,14 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + } + + if (is_host) { +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, "fqdn", &strres); ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, "fqdn", &strres); + if (ret) { + /* fqdn is mandatory for hosts */ + return ret; + } + } else if (is_service) { +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, "krbCanonicalName", &strres); ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, ++ "krbCanonicalName", &strres); + if (ret) { + /* krbCanonicalName is mandatory for services */ + return ret; +@@ -498,7 +498,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + return ENOENT; + } + } else { +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, "uid", &strres); ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, "uid", &strres); + if (ret) { + /* uid is mandatory */ + return ret; +@@ -511,7 +511,8 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + if (is_host || is_service) { + prigid = 515; /* Well known RID for domain computers group */ + } else { +- ret = ipadb_ldap_attr_to_int(lcontext, lentry, "gidNumber", &intres); ++ ret = ipadb_ldap_attr_to_int(ipactx->lcontext, lentry, ++ "gidNumber", &intres); + if (ret) { + /* gidNumber is mandatory */ + return ret; +@@ -544,7 +545,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + info3->base.kickoff_time = INT64_MAX; + #endif + +- ret = ipadb_ldap_attr_to_time_t(lcontext, lentry, ++ ret = ipadb_ldap_attr_to_time_t(ipactx->lcontext, lentry, + "krbLastPwdChange", &timeres); + switch (ret) { + case 0: +@@ -562,7 +563,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + info3->base.allow_password_change = info3->base.last_password_change; + info3->base.force_password_change = INT64_MAX; + +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, "cn", &strres); ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, "cn", &strres); + switch (ret) { + case 0: + info3->base.full_name.string = talloc_strdup(memctx, strres); +@@ -575,7 +576,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + return ret; + } + +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, + "ipaNTLogonScript", &strres); + switch (ret) { + case 0: +@@ -589,7 +590,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + return ret; + } + +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, + "ipaNTProfilePath", &strres); + switch (ret) { + case 0: +@@ -603,7 +604,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + return ret; + } + +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, + "ipaNTHomeDirectory", &strres); + switch (ret) { + case 0: +@@ -617,7 +618,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + return ret; + } + +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, + "ipaNTHomeDirectoryDrive", &strres); + switch (ret) { + case 0: +@@ -648,7 +649,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + info3->base.rid = 515; + } + } else { +- ret = ipadb_ldap_attr_to_str(lcontext, lentry, ++ ret = ipadb_ldap_attr_to_str(ipactx->lcontext, lentry, + "ipaNTSecurityIdentifier", &strres); + if (ret) { + /* SID is mandatory */ +@@ -665,7 +666,7 @@ static krb5_error_code ipadb_fill_info3(struct ipadb_context *ipactx, + } + } + +- ret = ipadb_ldap_deref_results(lcontext, lentry, &deref_results); ++ ret = ipadb_ldap_deref_results(ipactx->lcontext, lentry, &deref_results); + switch (ret) { + LDAPDerefRes *dres; + LDAPDerefVal *dval; +@@ -2511,7 +2512,7 @@ static void ipadb_free_sid_blacklists(char ***sid_blocklist_incoming, char ***si + krb5_error_code ipadb_mspac_get_trusted_domains(struct ipadb_context *ipactx) + { + struct ipadb_adtrusts *t; +- LDAP *lc = ipactx->lcontext; ++ LDAP *lc = NULL; + char *attrs[] = { "cn", "ipaNTTrustPartner", "ipaNTFlatName", + "ipaNTTrustedDomainSID", "ipaNTSIDBlacklistIncoming", + "ipaNTSIDBlacklistOutgoing", "ipaNTAdditionalSuffixes", NULL }; +@@ -2545,6 +2546,7 @@ krb5_error_code ipadb_mspac_get_trusted_domains(struct ipadb_context *ipactx) + goto done; + } + ++ lc = ipactx->lcontext; + for (le = ldap_first_entry(lc, res); le; le = ldap_next_entry(lc, le)) { + dnstr = ldap_get_dn(lc, le); + +diff --git a/daemons/ipa-kdb/ipa_kdb_principals.c b/daemons/ipa-kdb/ipa_kdb_principals.c +index d1fa51578..cf1b4f53e 100644 +--- a/daemons/ipa-kdb/ipa_kdb_principals.c ++++ b/daemons/ipa-kdb/ipa_kdb_principals.c +@@ -333,6 +333,11 @@ static enum ipadb_user_auth ipadb_get_user_auth(struct ipadb_context *ipactx, + if (gcfg != NULL) + gua = gcfg->user_auth; + ++ /* lcontext == NULL means ipadb_get_global_config() failed to load ++ * global config and cleared the ipactx */ ++ if (ipactx->lcontext == NULL) ++ return IPADB_USER_AUTH_NONE; ++ + /* Get the user's user_auth settings if not disabled. */ + if ((gua & IPADB_USER_AUTH_DISABLED) == 0) + ipadb_parse_user_auth(ipactx->lcontext, lentry, &ua); +@@ -607,8 +612,16 @@ static krb5_error_code ipadb_parse_ldap_entry(krb5_context kcontext, + free(entry); + return KRB5_KDB_DBNOTINITED; + } +- lcontext = ipactx->lcontext; +- if (!lcontext) { ++ ++ entry->magic = KRB5_KDB_MAGIC_NUMBER; ++ entry->len = KRB5_KDB_V1_BASE_LENGTH; ++ ++ /* Get User Auth configuration. */ ++ ua = ipadb_get_user_auth(ipactx, lentry); ++ ++ /* ipadb_get_user_auth() calls into ipadb_get_global_config() ++ * and that might fail, causing lcontext to become NULL */ ++ if (!ipactx->lcontext) { + krb5_klog_syslog(LOG_INFO, + "No LDAP connection in ipadb_parse_ldap_entry(); retrying...\n"); + ret = ipadb_get_connection(ipactx); +@@ -620,11 +633,10 @@ static krb5_error_code ipadb_parse_ldap_entry(krb5_context kcontext, + } + } + +- entry->magic = KRB5_KDB_MAGIC_NUMBER; +- entry->len = KRB5_KDB_V1_BASE_LENGTH; +- +- /* Get User Auth configuration. */ +- ua = ipadb_get_user_auth(ipactx, lentry); ++ /* If any code below would result in invalidating ipactx->lcontext, ++ * lcontext must be updated with the new ipactx->lcontext value. ++ * We rely on the fact that none of LDAP-parsing helpers does it. */ ++ lcontext = ipactx->lcontext; + + /* ignore mask for now */ + +-- +2.29.2 + +From 0da9de495ca41a1bf0926aef7c9c75c3e53dcd63 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Tue, 23 Feb 2021 10:06:25 +0200 +Subject: [PATCH] ipa-kdb: fix compiler warnings + +There are few fields in KDB structures that have 'conflicting' types but +need to be compared. They come from MIT Kerberos and we have no choice +here. + +In the same way, SID structures have own requirements. + +Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Robbie Harwood <rharwood@redhat.com> +Reviewed-By: Rob Crittenden <rcritten@redhat.com> +--- + daemons/ipa-kdb/ipa_kdb_audit_as.c | 4 ++-- + daemons/ipa-kdb/ipa_kdb_mspac.c | 6 +++--- + daemons/ipa-kdb/ipa_kdb_principals.c | 6 +++--- + daemons/ipa-kdb/ipa_kdb_pwdpolicy.c | 2 +- + 4 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/daemons/ipa-kdb/ipa_kdb_audit_as.c b/daemons/ipa-kdb/ipa_kdb_audit_as.c +index ed48ea758..ec2046bfe 100644 +--- a/daemons/ipa-kdb/ipa_kdb_audit_as.c ++++ b/daemons/ipa-kdb/ipa_kdb_audit_as.c +@@ -112,13 +112,13 @@ void ipadb_audit_as_req(krb5_context kcontext, + + if (krb5_ts_after(krb5_ts_incr(client->last_failed, + ied->pol->lockout_duration), authtime) && +- (client->fail_auth_count >= ied->pol->max_fail && ++ (client->fail_auth_count >= (krb5_kvno) ied->pol->max_fail && + ied->pol->max_fail != 0)) { + /* client already locked, nothing more to do */ + break; + } + if (ied->pol->max_fail == 0 || +- client->fail_auth_count < ied->pol->max_fail) { ++ client->fail_auth_count < (krb5_kvno) ied->pol->max_fail) { + /* let's increase the fail counter */ + client->fail_auth_count++; + client->mask |= KMASK_FAIL_AUTH_COUNT; +diff --git a/daemons/ipa-kdb/ipa_kdb_mspac.c b/daemons/ipa-kdb/ipa_kdb_mspac.c +index 81a8fd483..9691b14f6 100644 +--- a/daemons/ipa-kdb/ipa_kdb_mspac.c ++++ b/daemons/ipa-kdb/ipa_kdb_mspac.c +@@ -148,9 +148,9 @@ int string_to_sid(const char *str, struct dom_sid *sid) + + char *dom_sid_string(TALLOC_CTX *memctx, const struct dom_sid *dom_sid) + { +- size_t c; ++ int8_t c; + size_t len; +- int ofs; ++ size_t ofs; + uint32_t ia; + char *buf; + +@@ -2612,7 +2612,7 @@ krb5_error_code ipadb_mspac_get_trusted_domains(struct ipadb_context *ipactx) + + t[n].upn_suffixes_len = NULL; + if (t[n].upn_suffixes != NULL) { +- size_t len = 0; ++ int len = 0; + + for (; t[n].upn_suffixes[len] != NULL; len++); + +diff --git a/daemons/ipa-kdb/ipa_kdb_principals.c b/daemons/ipa-kdb/ipa_kdb_principals.c +index cf1b4f53e..0a98ff054 100644 +--- a/daemons/ipa-kdb/ipa_kdb_principals.c ++++ b/daemons/ipa-kdb/ipa_kdb_principals.c +@@ -494,7 +494,7 @@ static krb5_error_code ipadb_get_ldap_auth_ind(krb5_context kcontext, + l = len; + for (i = 0; i < count; i++) { + ret = snprintf(ap, l, "%s ", authinds[i]); +- if (ret <= 0 || ret > l) { ++ if (ret <= 0 || ret > (int) l) { + ret = ENOMEM; + goto cleanup; + } +@@ -2086,7 +2086,7 @@ static krb5_error_code ipadb_get_ldap_mod_auth_ind(krb5_context kcontext, + char *s = NULL; + size_t ai_size = 0; + int cnt = 0; +- int i = 0; ++ size_t i = 0; + + ret = krb5_dbe_get_string(kcontext, entry, "require_auth", &ais); + if (ret) { +@@ -2467,7 +2467,7 @@ static krb5_error_code ipadb_entry_default_attrs(struct ipadb_mods *imods) + { + krb5_error_code kerr; + LDAPMod *m = NULL; +- int i; ++ size_t i; + + kerr = ipadb_mods_new(imods, &m); + if (kerr) { +diff --git a/daemons/ipa-kdb/ipa_kdb_pwdpolicy.c b/daemons/ipa-kdb/ipa_kdb_pwdpolicy.c +index 4965e6d7f..6f21ef867 100644 +--- a/daemons/ipa-kdb/ipa_kdb_pwdpolicy.c ++++ b/daemons/ipa-kdb/ipa_kdb_pwdpolicy.c +@@ -361,7 +361,7 @@ krb5_error_code ipadb_check_policy_as(krb5_context kcontext, + } + + if (ied->pol->max_fail == 0 || +- client->fail_auth_count < ied->pol->max_fail) { ++ client->fail_auth_count < (krb5_kvno) ied->pol->max_fail) { + /* still within allowed failures range */ + return 0; + } +-- +2.29.2 + +From c7ce801b590e29263e9b1904995c603735007771 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Wed, 24 Feb 2021 20:51:40 +0200 +Subject: [PATCH] ipa-kdb: add missing prototypes + +On Fedora 33 GCC defaults to -Wmissing-prototypes and emits warnings +about function prototypes missing. If -Werror is specified, this breaks +compilation. + +We also default to -Werror=implicit-function-declaration + +Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Robbie Harwood <rharwood@redhat.com> +Reviewed-By: Rob Crittenden <rcritten@redhat.com> +--- + daemons/ipa-kdb/ipa_kdb_kdcpolicy.c | 4 ++++ + daemons/ipa-kdb/ipa_kdb_mspac.c | 20 ++++++++++++-------- + daemons/ipa-kdb/ipa_kdb_mspac_private.h | 4 ++++ + 3 files changed, 20 insertions(+), 8 deletions(-) + +diff --git a/daemons/ipa-kdb/ipa_kdb_kdcpolicy.c b/daemons/ipa-kdb/ipa_kdb_kdcpolicy.c +index a89f8bbda..aa61a2d1b 100644 +--- a/daemons/ipa-kdb/ipa_kdb_kdcpolicy.c ++++ b/daemons/ipa-kdb/ipa_kdb_kdcpolicy.c +@@ -14,6 +14,10 @@ + #define ONE_DAY_SECONDS (24 * 60 * 60) + #define JITTER_WINDOW_SECONDS (1 * 60 * 60) + ++krb5_error_code kdcpolicy_ipakdb_initvt(krb5_context context, ++ int maj_ver, int min_ver, ++ krb5_plugin_vtable vtable); ++ + static void + jitter(krb5_deltat baseline, krb5_deltat *lifetime_out) + { +diff --git a/daemons/ipa-kdb/ipa_kdb_mspac.c b/daemons/ipa-kdb/ipa_kdb_mspac.c +index 9691b14f6..47b12a16f 100644 +--- a/daemons/ipa-kdb/ipa_kdb_mspac.c ++++ b/daemons/ipa-kdb/ipa_kdb_mspac.c +@@ -2408,9 +2408,10 @@ void ipadb_mspac_struct_free(struct ipadb_mspac **mspac) + *mspac = NULL; + } + +-krb5_error_code ipadb_adtrusts_fill_sid_blacklist(char **source_sid_blacklist, +- struct dom_sid **result_sids, +- int *result_length) ++static krb5_error_code ++ipadb_adtrusts_fill_sid_blacklist(char **source_sid_blacklist, ++ struct dom_sid **result_sids, ++ int *result_length) + { + int len, i; + char **source; +@@ -2441,9 +2442,10 @@ krb5_error_code ipadb_adtrusts_fill_sid_blacklist(char **source_sid_blacklist, + return 0; + } + +-krb5_error_code ipadb_adtrusts_fill_sid_blacklists(struct ipadb_adtrusts *adtrust, +- char **sid_blocklist_incoming, +- char **sid_blocklist_outgoing) ++static krb5_error_code ++ipadb_adtrusts_fill_sid_blacklists(struct ipadb_adtrusts *adtrust, ++ char **sid_blocklist_incoming, ++ char **sid_blocklist_outgoing) + { + krb5_error_code kerr; + +@@ -2464,7 +2466,8 @@ krb5_error_code ipadb_adtrusts_fill_sid_blacklists(struct ipadb_adtrusts *adtrus + return 0; + } + +-krb5_error_code ipadb_mspac_check_trusted_domains(struct ipadb_context *ipactx) ++static krb5_error_code ++ipadb_mspac_check_trusted_domains(struct ipadb_context *ipactx) + { + char *attrs[] = { NULL }; + char *filter = "(objectclass=ipaNTTrustedDomain)"; +@@ -2509,7 +2512,8 @@ static void ipadb_free_sid_blacklists(char ***sid_blocklist_incoming, char ***si + } + } + +-krb5_error_code ipadb_mspac_get_trusted_domains(struct ipadb_context *ipactx) ++static krb5_error_code ++ipadb_mspac_get_trusted_domains(struct ipadb_context *ipactx) + { + struct ipadb_adtrusts *t; + LDAP *lc = NULL; +diff --git a/daemons/ipa-kdb/ipa_kdb_mspac_private.h b/daemons/ipa-kdb/ipa_kdb_mspac_private.h +index d23a14a0b..8c8a3a001 100644 +--- a/daemons/ipa-kdb/ipa_kdb_mspac_private.h ++++ b/daemons/ipa-kdb/ipa_kdb_mspac_private.h +@@ -53,3 +53,7 @@ struct ipadb_adtrusts { + + int string_to_sid(const char *str, struct dom_sid *sid); + char *dom_sid_string(TALLOC_CTX *memctx, const struct dom_sid *dom_sid); ++krb5_error_code filter_logon_info(krb5_context context, TALLOC_CTX *memctx, ++ krb5_data realm, struct PAC_LOGON_INFO_CTR *info); ++void get_authz_data_types(krb5_context context, krb5_db_entry *entry, ++ bool *_with_pac, bool *_with_pad); +\ No newline at end of file +-- +2.29.2 + +From f340baa4283c76957d9e0a85896c7fa3a994bba6 Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Wed, 24 Feb 2021 20:52:15 +0200 +Subject: [PATCH] ipa-kdb: reformat ipa_kdb_certauth + +Add prototype to the exported function + +Replace few tabs by spaces and mark static code as static. + +Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Robbie Harwood <rharwood@redhat.com> +Reviewed-By: Rob Crittenden <rcritten@redhat.com> +--- + daemons/ipa-kdb/ipa_kdb_certauth.c | 25 ++++++++++++++----------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +diff --git a/daemons/ipa-kdb/ipa_kdb_certauth.c b/daemons/ipa-kdb/ipa_kdb_certauth.c +index bc6b26578..3a3060c92 100644 +--- a/daemons/ipa-kdb/ipa_kdb_certauth.c ++++ b/daemons/ipa-kdb/ipa_kdb_certauth.c +@@ -71,10 +71,13 @@ struct krb5_certauth_moddata_st { + time_t valid_until; + }; + +-void ipa_certmap_debug(void *private, +- const char *file, long line, +- const char *function, +- const char *format, ...) ++krb5_error_code certauth_ipakdb_initvt(krb5_context context, ++ int maj_ver, int min_ver, ++ krb5_plugin_vtable vtable); ++ ++static void ipa_certmap_debug(void *private, const char *file, long line, ++ const char *function, ++ const char *format, ...) + { + va_list ap; + char str[255] = { 0 }; +@@ -354,12 +357,12 @@ static krb5_error_code ipa_certauth_authorize(krb5_context context, + * so there is nothing more to add here. */ + auth_inds = calloc(2, sizeof(char *)); + if (auth_inds != NULL) { +- ret = asprintf(&auth_inds[0], "pkinit"); +- if (ret != -1) { ++ ret = asprintf(&auth_inds[0], "pkinit"); ++ if (ret != -1) { + auth_inds[1] = NULL; + *authinds_out = auth_inds; +- } else { +- free(auth_inds); ++ } else { ++ free(auth_inds); + } + } + +@@ -404,12 +407,12 @@ static void ipa_certauth_free_indicator(krb5_context context, + size_t i = 0; + + if ((authinds == NULL) || (moddata == NULL)) { +- return; ++ return; + } + + for(i=0; authinds[i]; i++) { +- free(authinds[i]); +- authinds[i] = NULL; ++ free(authinds[i]); ++ authinds[i] = NULL; + } + + free(authinds); +-- +2.29.2 + +From 2968609fd9f8f91b704dc8167d39ecc67beb8ddd Mon Sep 17 00:00:00 2001 +From: Alexander Bokovoy <abokovoy@redhat.com> +Date: Wed, 24 Feb 2021 20:55:41 +0200 +Subject: [PATCH] ipa-kdb: mark test functions as static + +No need to define missing prototypes to single use test functions. + +Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com> +Reviewed-By: Robbie Harwood <rharwood@redhat.com> +Reviewed-By: Rob Crittenden <rcritten@redhat.com> +--- + daemons/ipa-kdb/tests/ipa_kdb_tests.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +diff --git a/daemons/ipa-kdb/tests/ipa_kdb_tests.c b/daemons/ipa-kdb/tests/ipa_kdb_tests.c +index 2a174ce6b..0b51ffb96 100644 +--- a/daemons/ipa-kdb/tests/ipa_kdb_tests.c ++++ b/daemons/ipa-kdb/tests/ipa_kdb_tests.c +@@ -181,7 +181,7 @@ extern krb5_error_code filter_logon_info(krb5_context context, + krb5_data realm, + struct PAC_LOGON_INFO_CTR *info); + +-void test_filter_logon_info(void **state) ++static void test_filter_logon_info(void **state) + { + krb5_error_code kerr; + krb5_data realm = {KV5M_DATA, REALM_LEN, REALM}; +@@ -316,10 +316,7 @@ void test_filter_logon_info(void **state) + + } + +-extern void get_authz_data_types(krb5_context context, krb5_db_entry *entry, +- bool *with_pac, bool *with_pad); +- +-void test_get_authz_data_types(void **state) ++static void test_get_authz_data_types(void **state) + { + bool with_pac; + bool with_pad; +@@ -437,7 +434,7 @@ void test_get_authz_data_types(void **state) + krb5_free_principal(test_ctx->krb5_ctx, non_nfs_princ); + } + +-void test_string_to_sid(void **state) ++static void test_string_to_sid(void **state) + { + int ret; + struct dom_sid sid; +@@ -469,7 +466,7 @@ void test_string_to_sid(void **state) + assert_memory_equal(&exp_sid, &sid, sizeof(struct dom_sid)); + } + +-void test_dom_sid_string(void **state) ++static void test_dom_sid_string(void **state) + { + struct test_ctx *test_ctx; + char *str_sid; +@@ -495,7 +492,7 @@ void test_dom_sid_string(void **state) + } + + +-void test_check_trusted_realms(void **state) ++static void test_check_trusted_realms(void **state) + { + struct test_ctx *test_ctx; + krb5_error_code kerr = 0; +-- +2.29.2 + diff --git a/SOURCES/0010-ipa-client-install-output-a-warning-if-sudo-is-not-p_rhbz#1939371.patch b/SOURCES/0010-ipa-client-install-output-a-warning-if-sudo-is-not-p_rhbz#1939371.patch new file mode 100644 index 0000000..06b42e5 --- /dev/null +++ b/SOURCES/0010-ipa-client-install-output-a-warning-if-sudo-is-not-p_rhbz#1939371.patch @@ -0,0 +1,64 @@ +From 061e0b63ef3a72ba3261b42ec5f2ce290070c613 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com> +Date: Mon, 15 Mar 2021 16:55:08 +0100 +Subject: [PATCH] ipa-client-install: output a warning if sudo is not present + (2) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: https://pagure.io/freeipa/issue/8530 +Signed-off-by: François Cami <fcami@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +--- + ipaclient/install/client.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ipaclient/install/client.py b/ipaclient/install/client.py +index 0e478fa26..9bdfbddaf 100644 +--- a/ipaclient/install/client.py ++++ b/ipaclient/install/client.py +@@ -2205,7 +2205,7 @@ def install_check(options): + # available. + if options.conf_sudo: + try: +- subprocess.Popen(['sudo -V']) ++ subprocess.Popen(['sudo', '-V']) + except FileNotFoundError: + logger.info( + "The sudo binary does not seem to be present on this " +-- +2.30.2 + +From 4b917833fdd62cce2fd72809fd5c963194efba3e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fran=C3=A7ois=20Cami?= <fcami@redhat.com> +Date: Mon, 15 Mar 2021 17:00:05 +0100 +Subject: [PATCH] ipatests: check for the "no sudo present" string absence +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When sudo is installed, no warning should be output about sudo not +being available (obviously). Check that the relevant string is +not present. + +Fixes: https://pagure.io/freeipa/issue/8530 +Signed-off-by: François Cami <fcami@redhat.com> +Reviewed-By: Armando Neto <abiagion@redhat.com> +--- + ipatests/test_integration/test_installation.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/ipatests/test_integration/test_installation.py b/ipatests/test_integration/test_installation.py +index a50a59f1a..a5ff17a0d 100644 +--- a/ipatests/test_integration/test_installation.py ++++ b/ipatests/test_integration/test_installation.py +@@ -1620,3 +1620,5 @@ class TestInstallWithoutSudo(IntegrationTest): + tasks.install_packages(self.clients[0], ['sudo']) + for pkg in ('sudo', 'libsss_sudo'): + assert tasks.is_package_installed(self.clients[0], pkg) ++ result = tasks.install_client(self.master, self.clients[0]) ++ assert self.no_sudo_str not in result.stderr_text +-- +2.30.2 + diff --git a/SOURCES/1001-Change-branding-to-IPA-and-Identity-Management.patch b/SOURCES/1001-Change-branding-to-IPA-and-Identity-Management.patch index 2ff282b..0e9a6de 100644 --- a/SOURCES/1001-Change-branding-to-IPA-and-Identity-Management.patch +++ b/SOURCES/1001-Change-branding-to-IPA-and-Identity-Management.patch @@ -1,1160 +1,176 @@ -From 801b072f7fdc3e8b961136d52704f3e09314511e Mon Sep 17 00:00:00 2001 +From ac3ba2b4ff4cd3ca85c1ff07c2b050f8b5eb7c2b Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 01/93] client/man/default.conf.5: Change branding to IPA and - Identity Management - ---- - client/man/default.conf.5 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/default.conf.5 b/client/man/default.conf.5 -index 8336ed8..f85fd67 100644 ---- a/client/man/default.conf.5 -+++ b/client/man/default.conf.5 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@@redhat.com> - .\" --.TH "default.conf" "5" "Feb 21 2011" "FreeIPA" "FreeIPA Manual Pages" -+.TH "default.conf" "5" "Feb 21 2011" "IPA" "IPA Manual Pages" - .SH "NAME" - default.conf \- IPA configuration file - .SH "SYNOPSIS" --- -2.28.0 - - -From 0304c1f2a71889d069ef56928b6c200cfe8536b1 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 02/93] client/man/ipa-certupdate.1: Change branding to IPA and - Identity Management - ---- - client/man/ipa-certupdate.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/ipa-certupdate.1 b/client/man/ipa-certupdate.1 -index d95790a..431b395 100644 ---- a/client/man/ipa-certupdate.1 -+++ b/client/man/ipa-certupdate.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Jan Cholasta <jcholast@redhat.com> - .\" --.TH "ipa-certupdate" "1" "Jul 2 2014" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-certupdate" "1" "Jul 2 2014" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-certupdate \- Update local IPA certificate databases with certificates from the server - .SH "SYNOPSIS" --- -2.28.0 - - -From 6ea76e04904faed0bb4622a25e79050cb40de03b Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 03/93] client/man/ipa-client-automount.1: Change branding to - IPA and Identity Management - ---- - client/man/ipa-client-automount.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/ipa-client-automount.1 b/client/man/ipa-client-automount.1 -index 4c3caee..3f6edab 100644 ---- a/client/man/ipa-client-automount.1 -+++ b/client/man/ipa-client-automount.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-client-automount" "1" "May 25 2012" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-client-automount" "1" "May 25 2012" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-client\-automount \- Configure automount and NFS for IPA - .SH "SYNOPSIS" --- -2.28.0 - - -From 9ce4bccbcc4270742012e548a94de7a29f809071 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 04/93] client/man/ipa-client-install.1: Change branding to IPA - and Identity Management - ---- - client/man/ipa-client-install.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/ipa-client-install.1 b/client/man/ipa-client-install.1 -index 2d031fb..64ab1bf 100644 ---- a/client/man/ipa-client-install.1 -+++ b/client/man/ipa-client-install.1 -@@ -1,7 +1,7 @@ - .\" A man page for ipa-client-install - .\" Copyright (C) 2008-2016 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-client-install" "1" "Dec 19 2016" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-client-install" "1" "Dec 19 2016" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-client\-install \- Configure an IPA client - .SH "SYNOPSIS" --- -2.28.0 - - -From b82626b957bec1d023b204d77d8c0f28b495756a Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 05/93] client/man/ipa-getkeytab.1: Change branding to IPA and - Identity Management - ---- - client/man/ipa-getkeytab.1 | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/client/man/ipa-getkeytab.1 b/client/man/ipa-getkeytab.1 -index a4bcd88..b57c548 100644 ---- a/client/man/ipa-getkeytab.1 -+++ b/client/man/ipa-getkeytab.1 -@@ -17,7 +17,7 @@ - .\" Author: Karl MacMillan <kmacmill@redhat.com> - .\" Author: Simo Sorce <ssorce@redhat.com> - .\" --.TH "ipa-getkeytab" "1" "Oct 10 2007" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-getkeytab" "1" "Oct 10 2007" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-getkeytab \- Get a keytab for a Kerberos principal - .SH "SYNOPSIS" -@@ -118,7 +118,7 @@ GSSAPI or EXTERNAL. - \fB\-r\fR - Retrieve mode. Retrieve an existing key from the server instead of generating a - new one. This is incompatible with the \-\-password option, and will work only --against a FreeIPA server more recent than version 3.3. The user requesting the -+against a IPA server more recent than version 3.3. The user requesting the - keytab must have access to the keys for this operation to succeed. - .SH "EXAMPLES" - Add and retrieve a keytab for the NFS service principal on --- -2.28.0 - - -From 4f371317112e7f02d53a00b63ae4c0836923f947 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 06/93] client/man/ipa-join.1: Change branding to IPA and - Identity Management - ---- - client/man/ipa-join.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/ipa-join.1 b/client/man/ipa-join.1 -index 6e512b8..5eaf68f 100644 ---- a/client/man/ipa-join.1 -+++ b/client/man/ipa-join.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-join" "1" "Oct 8 2009" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-join" "1" "Oct 8 2009" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-join \- Join a machine to an IPA realm and get a keytab for the host service principal - .SH "SYNOPSIS" --- -2.28.0 - - -From 32d30177deb6cd2753eb2871957b83d3421c002f Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 07/93] client/man/ipa-rmkeytab.1: Change branding to IPA and +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 1/3] install/ui/css/patternfly.css: Change branding to IPA and Identity Management --- - client/man/ipa-rmkeytab.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/ipa-rmkeytab.1 b/client/man/ipa-rmkeytab.1 -index 53f7754..2c8218c 100644 ---- a/client/man/ipa-rmkeytab.1 -+++ b/client/man/ipa-rmkeytab.1 -@@ -17,7 +17,7 @@ - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" - .\" --.TH "ipa-rmkeytab" "1" "Oct 30 2009" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-rmkeytab" "1" "Oct 30 2009" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-rmkeytab \- Remove a kerberos principal from a keytab - .SH "SYNOPSIS" --- -2.28.0 - - -From 57c3e0cee6397e4aa6fb2c5fe792759e6fda7d99 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 08/93] client/man/ipa.1: Change branding to IPA and Identity - Management - ---- - client/man/ipa.1 | 2 +- + install/ui/css/patternfly.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/client/man/ipa.1 b/client/man/ipa.1 -index f9fae7c..2fb21b5 100644 ---- a/client/man/ipa.1 -+++ b/client/man/ipa.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Pavel Zuna <pzuna@redhat.com> - .\" --.TH "ipa" "1" "Apr 29 2016" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa" "1" "Apr 29 2016" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa \- IPA command\-line interface - .SH "SYNOPSIS" +diff --git a/install/ui/css/patternfly.css b/install/ui/css/patternfly.css +index ee92053..de574a8 100644 +--- a/install/ui/css/patternfly.css ++++ b/install/ui/css/patternfly.css +@@ -4,4 +4,4 @@ + * + * Copyright 2013 bootstrap-select + * Licensed under the MIT license +- */.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*=span]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*=span].pull-right,.row-fluid .bootstrap-select.btn-group[class*=span].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*=span]):not([class*=col-]):not([class*=form-control]){width:220px}.bootstrap-select{width:220px\9}.bootstrap-select.form-control:not([class*=span]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu li.disabled>a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group[class*=span] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small{color:#64b1d8;color:rgba(255,255,255,.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0}.alert{border-width:1px;padding-left:47px;padding-right:14px;position:relative}.alert .alert-link{color:#0088ce}.alert .alert-link:hover{color:#00659c}.alert>.btn.pull-right{margin-top:-3px}.alert>.pficon{font-size:22px;position:absolute;left:13px;top:10px}.alert .close{opacity:.85;filter:alpha(opacity=85)}.alert .close:focus,.alert .close:hover{opacity:1;filter:alpha(opacity=100)}.alert .pficon-info{color:#4d5258}.alert-dismissable{padding-right:28px}.alert-dismissable .close{right:-13px;top:1px}.badge{margin-left:6px}.nav-pills>li>a>.badge{margin-left:6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7dc3e8}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#0088ce;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6);box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6)}.has-error .bootstrap-select.btn-group .btn{border-color:#c00}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#900;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#ededed!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#8b8d8f;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small{color:#9c9c9c}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#9c9c9c}.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:PatternFlyIcons-webfont}.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;position:relative}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e5e5e5;border-color:#a9a9a9}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#f1f1f1;border-color:#bbb}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#def3ff!important;border-color:#bee1f4!important}.treeview .list-group-item.node-selected{background:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#9c9c9c;content:"\f101";font-family:FontAwesome;font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(3,3,3,.1);box-shadow:0 2px 3px rgba(3,3,3,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#670000}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#8b0000}.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e5e5e5;border-color:#a9a9a9}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f1f1f1;border-color:#bbb}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0,#0088ce 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0088ce;background-image:none;border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0077b5;border-color:#004e78}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0088ce;border-color:#00659c}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs{font-weight:400}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.ColVis_Button:active:focus{outline:0}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #bbb;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #d1d1d1 #f5f5f5;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ededed;border-right-color:#ededed;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d1d1d1;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075);box-shadow:inset 0 1px 1px rgba(3,3,3,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0088ce;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{color:#0088ce!important;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:FontAwesome;font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0088ce;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}table.datatable th:active{outline:0}.caret{font-family:FontAwesome;font-weight:400;height:9px;position:relative;vertical-align:baseline;width:12px}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;text-align:center;top:-1px;right:0}.dropup .caret:before{content:"\f106"}.dropdown-menu .divider{background-color:#ededed;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#bee1f4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0088ce;border-color:#0088ce;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0088ce!important;border-color:#0088ce!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.dropdown>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#def3ff;border-color:#bee1f4}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.dropdown-kebab-pf .btn-link{color:#252525;font-size:16px;line-height:1;padding:4px 0}.dropdown-kebab-pf .btn-link:active,.dropdown-kebab-pf .btn-link:focus,.dropdown-kebab-pf .btn-link:hover{color:#0088ce}.dropdown-kebab-pf .dropdown-menu{left:-15px;margin-top:11px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right{left:auto;right:-15px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:after,.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:before{left:auto;right:6px}.dropdown-kebab-pf .dropdown-menu:after,.dropdown-kebab-pf .dropdown-menu:before{border-bottom-color:#bbb;border-bottom-style:solid;border-bottom-width:10px;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:inline-block;left:6px;position:absolute;top:-11px}.dropdown-kebab-pf .dropdown-menu:after{border-bottom-color:#fff;top:-10px}.dropdown-kebab-pf.dropup .dropdown-menu{margin-bottom:11px;margin-top:0}.dropdown-kebab-pf.dropup .dropdown-menu:after,.dropdown-kebab-pf.dropup .dropdown-menu:before{border-bottom:none;border-top-color:#bbb;border-top-style:solid;border-top-width:10px;bottom:-11px;top:auto}.dropdown-kebab-pf.dropup .dropdown-menu:after{border-top-color:#fff;bottom:-10px}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../fonts/open-sans/OpenSans-Regular.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('OpenSans-Light'),local('Open Sans Light'),url(../fonts/open-sans/OpenSans-Light.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(../fonts/open-sans/OpenSans-Semibold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../fonts/open-sans/OpenSans-Bold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local('Open Sans Extrabold'),local('OpenSans-Extrabold'),url(../fonts/open-sans/OpenSans-ExtraBold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(../fonts/open-sans/OpenSans-LightItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../fonts/open-sans/OpenSans-Italic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(../fonts/open-sans/OpenSans-SemiboldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../fonts/open-sans/OpenSans-BoldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local('Open Sans Extrabold Italic'),local('OpenSans-ExtraboldItalic'),url(../fonts/open-sans/OpenSans-ExtraBoldItalic.ttf) format('truetype')}.chars-remaining-pf span{font-weight:600;padding-right:5px}.chars-warn-remaining-pf{color:#c00}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f}.form-control[disabled]:hover,.form-control[readonly]:hover,fieldset[disabled] .form-control:hover{border-color:#bbb}.form-control:hover{border-color:#7dc3e8}.has-error .form-control:hover{border-color:#900}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label,.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label,.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#363636}.help-block{margin-bottom:0}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}label{font-weight:600}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0088ce}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#999;border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.right .arrow{border-left-width:0;border-right-color:#999;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{bottom:-10px;border-left-width:0;border-right-color:#fff;content:" ";left:1px}.infotip.left .arrow{border-left-color:#999;border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;bottom:-10px;content:" ";right:1px}.label{border-radius:0;font-size:100%;font-weight:600}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #ededed}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-top:0;border-left:0;border-right:0;margin-bottom:0}.list-group-item-heading{font-weight:600}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{border-top:solid 1px #39a5dc;margin-top:-1px;z-index:auto}.list-group-item.active:first-child{border-top:1px solid #39a5dc!important;margin-top:-1px}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}}.login-pf body{background:#030303 url(../img/bg-login.jpg) repeat-x 50% 0;background-size:auto}@media (min-width:768px){.login-pf body{background-size:100% auto}}.login-pf .container{background-color:rgba(255,255,255,.055);clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid rgba(255,255,255,.3);padding-top:25px;margin-top:25px}@media (min-width:768px){.login-pf .container .details{border-left:1px solid rgba(255,255,255,.3);padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child{margin-bottom:0}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.modal-header{background-color:#f5f5f5;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px;font-weight:700}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.navbar-pf{background:#030303;border:0;border-radius:0;border-top:3px solid #39a5dc;margin-bottom:0;min-height:0}.navbar-pf .navbar-brand{color:#f5f5f5;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #292929;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#232323;color:#f5f5f5}.navbar-pf .navbar-nav>li>a{color:#d1d1d1;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#f5f5f5}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#232323;color:#f5f5f5}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#171717!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#1f1f1f!important;color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#d1d1d1;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#292929;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle{color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#363636;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#9c9c9c}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #292929}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:FontAwesome;font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #292929}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #292929}}@media (min-width:768px){.navbar-pf .navbar-brand{padding:8px 0 7px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:-o-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:linear-gradient(to bottom,#1d1d1d 0,#030303 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f5f5f5;border-bottom:1px solid #d1d1d1;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0088ce!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#f5f5f5}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#1d1d1d;border-top-color:#5c5c5c;color:#d1d1d1;background-image:-webkit-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:-o-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:linear-gradient(to bottom,#363636 0,#1d1d1d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#303030;border-bottom-color:#303030;border-top-color:#696969;-webkit-box-shadow:none;box-shadow:none;color:#f5f5f5;background-image:-webkit-linear-gradient(top,#434343 0,#303030 100%);background-image:-o-linear-gradient(top,#434343 0,#303030 100%);background-image:linear-gradient(to bottom,#434343 0,#303030 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#1f1f1f;border-bottom-color:#3e3e3e;border-right:1px solid #3e3e3e;border-top-color:#3b3b3b;font-weight:600;background-image:-webkit-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:-o-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:linear-gradient(to bottom,#323232 0,#1f1f1f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#323232;border-bottom-color:#4a4a4a;border-right-color:#4a4a4a;border-top-color:#4a4a4a;background-image:-webkit-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:-o-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:linear-gradient(to bottom,#3f3f3f 0,#323232 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#454545;border-bottom-color:#575757;border-right-color:#575757;border-top-color:#5a5a5a;background-image:-webkit-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:-o-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:linear-gradient(to bottom,#4c4c4c 0,#454545 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#363636;color:#d1d1d1}.navbar-pf .navbar-utility>li>a{border-left:1px solid #2b2b2b;color:#d1d1d1!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#232323;border-left-color:#373737}.navbar-pf .navbar-utility>li.open>a{border-left-color:#444;color:#f5f5f5!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .navbar-utility .open .dropdown-menu{border-top-width:0}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.drawer-pf{background-color:#fafafa;border:1px solid #d1d1d1;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);overflow-y:auto;position:absolute;right:0;width:320px;z-index:2}.drawer-pf .panel{border-bottom:none;border-left:none;border-right:none}.drawer-pf .panel-group .panel-heading+.panel-collapse .panel-body{border-top:none;border-bottom:1px solid #d1d1d1;padding:0}.drawer-pf .panel-counter{display:block;font-style:italic;line-height:1.2;padding-left:18px;padding-top:5px}.drawer-pf .panel-heading{border-bottom:1px solid #d1d1d1}.drawer-pf .panel-group{bottom:0;margin-bottom:0;position:absolute;top:25px;width:100%}.drawer-pf .panel-title a{cursor:pointer;display:block}.drawer-pf.drawer-pf-expanded{left:270px;width:inherit}.drawer-pf.drawer-pf-expanded .drawer-pf-toggle-expand:before{content:"\f101"}.drawer-pf-toggle-expand{color:inherit;cursor:pointer;left:0;padding:2px 5px;position:absolute}.drawer-pf-toggle-expand:before{content:"\f100";font-family:FontAwesome}.drawer-pf-toggle-expand:focus,.drawer-pf-toggle-expand:hover{color:inherit;text-decoration:none}.drawer-pf-action .btn-link{color:#0088ce;padding:10px 0}.drawer-pf-action .btn-link:hover{color:#00659c}.drawer-pf-loading{color:#4d5258;font-size:14px;padding:20px 15px}.drawer-pf-notification{border-bottom:1px solid #d1d1d1;padding:15px}.drawer-pf-notification .date{border-right:1px solid #aaa;display:inline-block;line-height:1;margin-right:5px;padding-right:9px}.drawer-pf-notification .pficon{font-size:14px;margin-top:3px}.drawer-pf-notification:last-of-type{border-bottom:none}.drawer-pf-notification:hover{background-color:#def3ff}.drawer-pf-notification.unread .drawer-pf-notification-message{font-weight:700}.drawer-pf-notification.expanded-notification .date{border-right:none;padding-right:0}.drawer-pf-notification-info,.drawer-pf-notification-message{display:block;padding-left:27px;padding-right:19px}.expanded-notification .drawer-pf-notification-info,.expanded-notification .drawer-pf-notification-message{display:inline-block}.drawer-pf-notifications-non-clickable .drawer-pf-notification:hover{background-color:#fff}.drawer-pf-title{background-color:#fafafa;border-bottom:1px solid #d1d1d1;position:absolute;width:318px}.drawer-pf-title h3{font-size:12px;margin:0;padding:6px 15px}.navbar-pf-vertical .drawer-pf{height:calc(100vh - 80px);top:58px}.navbar-pf-vertical .nav .drawer-pf-trigger .drawer-pf-trigger-icon{border-left:1px solid #2b2b2b;border-right:1px solid #2b2b2b;padding-left:15px;padding-right:15px}.navbar-pf-vertical .nav .drawer-pf-trigger.open .drawer-pf-trigger-icon{background-color:#232323}.navbar-pf .drawer-pf{height:calc(100vh - 46px);top:26px}.navbar-pf .drawer-pf-trigger-icon{cursor:pointer}.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(3,3,3,.125);box-shadow:inset 0 3px 5px rgba(3,3,3,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#f1f1f1;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2);color:#4d5258;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{font-weight:400}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#bbb;border-top-color:#bbb}.panel-group .panel-heading{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #d1d1d1}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";display:inline-block;font-family:FontAwesome;font-size:13px;margin-right:5px;text-align:center;vertical-align:0;width:8px}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105"}.popover{-webkit-box-shadow:0 2px 2px rgba(3,3,3,.08);box-shadow:0 2px 2px rgba(3,3,3,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(3,3,3,.25);box-shadow:inset 0 0 1px rgba(3,3,3,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{color:#363636;position:absolute;text-align:right}.progress-label-left .progress-bar span{font-size:14px;left:-40px;top:0;width:35px}.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{font-size:11px;overflow:hidden;right:0;text-overflow:ellipsis;white-space:nowrap}.progress-label-right .progress-bar span strong,.progress-label-top-right .progress-bar span strong{font-weight:600}.progress-label-right .progress-bar span{max-width:85px;top:0}.progress-label-top-right .progress-bar span{max-width:47%;top:-30px}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-bar-remaining{background:0 0}.progress-container{position:relative}.progress-container.progress-description-left{padding-left:90px}.progress-container.progress-label-right{padding-right:90px}.progress-description{margin-bottom:10px;max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description-left .progress-description{left:0;margin-bottom:0;max-width:85px;position:absolute;top:0}.progress-description .tooltip{white-space:normal}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .clear:focus{outline:0}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #ececec;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#ececec;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#9c9c9c;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0088ce!important;border-color:#0088ce!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#363636;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#def3ff;border-color:#bee1f4}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions{margin-right:20px}.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d1d1d1}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d1d1d1}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(3,3,3,.25);border-left:4px solid rgba(3,3,3,.25);border-right:4px solid rgba(3,3,3,.25);border-radius:100%;border-top:4px solid rgba(3,3,3,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.spinner.spinner-inverse{border-bottom-color:rgba(255,255,255,.25);border-left-color:rgba(255,255,255,.25);border-right-color:rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.75)}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-inverse{background-image:url(../img/spinner-inverse.gif)}.ie9 .spinner.spinner-inverse-lg{background-image:url(../img/spinner-inverse-lg.gif)}.ie9 .spinner.spinner-inverse-sm{background-image:url(../img/spinner-inverse-sm.gif)}.ie9 .spinner.spinner-inverse-xs{background-image:url(../img/spinner-inverse-xs.gif)}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#363636}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#00659c}.prettyprint ol.linenums{margin-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.table-bordered{border:1px solid #d1d1d1}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#def3ff;border-bottom-color:#7dc3e8}.table-treegrid span.indent{margin-left:10px;margin-right:10px}.table-treegrid span.icon{display:inline-block;font-size:13px;margin-right:5px;min-width:10px;text-align:center}.table-treegrid span.collapse-icon,.table-treegrid span.expand-icon{cursor:pointer}.table-treegrid>tbody>tr.odd{background-color:#f5f5f5}.nav-tabs{font-size:14px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#ededed;color:#252525}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#ededed}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf{font-size:12px}.nav-tabs+.nav-tabs-pf>li:first-child>a{padding-left:15px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#ededed}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #ededed}}.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0088ce}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0088ce}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{font-size:12px;line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}} +\ No newline at end of file ++ */.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*=span]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*=span].pull-right,.row-fluid .bootstrap-select.btn-group[class*=span].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*=span]):not([class*=col-]):not([class*=form-control]){width:220px}.bootstrap-select{width:220px\9}.bootstrap-select.form-control:not([class*=span]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu li.disabled>a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group[class*=span] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small{color:#64b1d8;color:rgba(255,255,255,.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0}.alert{border-width:1px;padding-left:47px;padding-right:14px;position:relative}.alert .alert-link{color:#0088ce}.alert .alert-link:hover{color:#00659c}.alert>.btn.pull-right{margin-top:-3px}.alert>.pficon{font-size:22px;position:absolute;left:13px;top:10px}.alert .close{opacity:.85;filter:alpha(opacity=85)}.alert .close:focus,.alert .close:hover{opacity:1;filter:alpha(opacity=100)}.alert .pficon-info{color:#4d5258}.alert-dismissable{padding-right:28px}.alert-dismissable .close{right:-13px;top:1px}.badge{margin-left:6px}.nav-pills>li>a>.badge{margin-left:6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7dc3e8}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#0088ce;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6);box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6)}.has-error .bootstrap-select.btn-group .btn{border-color:#c00}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#900;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#ededed!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#8b8d8f;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small{color:#9c9c9c}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#9c9c9c}.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:PatternFlyIcons-webfont}.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;position:relative}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e5e5e5;border-color:#a9a9a9}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#f1f1f1;border-color:#bbb}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#def3ff!important;border-color:#bee1f4!important}.treeview .list-group-item.node-selected{background:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#9c9c9c;content:"\f101";font-family:FontAwesome;font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(3,3,3,.1);box-shadow:0 2px 3px rgba(3,3,3,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#670000}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#8b0000}.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e5e5e5;border-color:#a9a9a9}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f1f1f1;border-color:#bbb}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0,#0088ce 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0088ce;background-image:none;border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0077b5;border-color:#004e78}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0088ce;border-color:#00659c}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs{font-weight:400}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.ColVis_Button:active:focus{outline:0}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #bbb;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #d1d1d1 #f5f5f5;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ededed;border-right-color:#ededed;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d1d1d1;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075);box-shadow:inset 0 1px 1px rgba(3,3,3,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0088ce;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{color:#0088ce!important;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:FontAwesome;font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0088ce;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}table.datatable th:active{outline:0}.caret{font-family:FontAwesome;font-weight:400;height:9px;position:relative;vertical-align:baseline;width:12px}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;text-align:center;top:-1px;right:0}.dropup .caret:before{content:"\f106"}.dropdown-menu .divider{background-color:#ededed;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#bee1f4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0088ce;border-color:#0088ce;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0088ce!important;border-color:#0088ce!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.dropdown>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#def3ff;border-color:#bee1f4}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.dropdown-kebab-pf .btn-link{color:#252525;font-size:16px;line-height:1;padding:4px 0}.dropdown-kebab-pf .btn-link:active,.dropdown-kebab-pf .btn-link:focus,.dropdown-kebab-pf .btn-link:hover{color:#0088ce}.dropdown-kebab-pf .dropdown-menu{left:-15px;margin-top:11px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right{left:auto;right:-15px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:after,.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:before{left:auto;right:6px}.dropdown-kebab-pf .dropdown-menu:after,.dropdown-kebab-pf .dropdown-menu:before{border-bottom-color:#bbb;border-bottom-style:solid;border-bottom-width:10px;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:inline-block;left:6px;position:absolute;top:-11px}.dropdown-kebab-pf .dropdown-menu:after{border-bottom-color:#fff;top:-10px}.dropdown-kebab-pf.dropup .dropdown-menu{margin-bottom:11px;margin-top:0}.dropdown-kebab-pf.dropup .dropdown-menu:after,.dropdown-kebab-pf.dropup .dropdown-menu:before{border-bottom:none;border-top-color:#bbb;border-top-style:solid;border-top-width:10px;bottom:-11px;top:auto}.dropdown-kebab-pf.dropup .dropdown-menu:after{border-top-color:#fff;bottom:-10px}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../fonts/open-sans/OpenSans-Regular.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('OpenSans-Light'),local('Open Sans Light'),url(../fonts/open-sans/OpenSans-Light.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(../fonts/open-sans/OpenSans-Semibold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../fonts/open-sans/OpenSans-Bold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local('Open Sans Extrabold'),local('OpenSans-Extrabold'),url(../fonts/open-sans/OpenSans-ExtraBold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(../fonts/open-sans/OpenSans-LightItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../fonts/open-sans/OpenSans-Italic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(../fonts/open-sans/OpenSans-SemiboldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../fonts/open-sans/OpenSans-BoldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local('Open Sans Extrabold Italic'),local('OpenSans-ExtraboldItalic'),url(../fonts/open-sans/OpenSans-ExtraBoldItalic.ttf) format('truetype')}.chars-remaining-pf span{font-weight:600;padding-right:5px}.chars-warn-remaining-pf{color:#c00}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f}.form-control[disabled]:hover,.form-control[readonly]:hover,fieldset[disabled] .form-control:hover{border-color:#bbb}.form-control:hover{border-color:#7dc3e8}.has-error .form-control:hover{border-color:#900}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label,.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label,.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#363636}.help-block{margin-bottom:0}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}label{font-weight:600}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0088ce}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#999;border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.right .arrow{border-left-width:0;border-right-color:#999;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{bottom:-10px;border-left-width:0;border-right-color:#fff;content:" ";left:1px}.infotip.left .arrow{border-left-color:#999;border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;bottom:-10px;content:" ";right:1px}.label{border-radius:0;font-size:100%;font-weight:600}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #ededed}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-top:0;border-left:0;border-right:0;margin-bottom:0}.list-group-item-heading{font-weight:600}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{border-top:solid 1px #39a5dc;margin-top:-1px;z-index:auto}.list-group-item.active:first-child{border-top:1px solid #39a5dc!important;margin-top:-1px}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}}.login-pf body{background:#1a1a1a url(../img/bg-login.jpg) repeat-x 50% 0;background-size:auto}@media (min-width:768px){.login-pf body{background-size:100% auto}}.login-pf .container{background-color:transparent;clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid rgba(255,255,255,.3);padding-top:25px;margin-top:25px}@media (min-width:768px){.login-pf .container .details{border-left:1px solid rgba(255,255,255,.3);padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child{margin-bottom:0}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.modal-header{background-color:#f5f5f5;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px;font-weight:700}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.navbar-pf{background:#393F45;border:0;border-radius:0;border-top:3px solid #c00;margin-bottom:0;min-height:0}.navbar-pf .navbar-brand{color:#fff;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #53565b;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#454C53;color:#fff}.navbar-pf .navbar-nav>li>a{color:#dbdada;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#fff}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#454C53;color:#fff}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#3c434a!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#424950!important;color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#dbdada;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#53565b;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle{color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#363636;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#9c9c9c}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #53565b}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:FontAwesome;font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #53565b}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #53565b}}@media (min-width:768px){.navbar-pf .navbar-brand{padding:7px 0 8px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#474c50 0,#383f43 100%);background-image:-o-linear-gradient(top,#474c50 0,#383f43 100%);background-image:linear-gradient(to bottom,#474c50 0,#383f43 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff474c50', endColorstr='#ff383f43', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f6f6f6;border-bottom:1px solid #cecdcd;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0088ce!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#fff}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#4b5053;border-top-color:#949699;color:#dbdada;background-image:-webkit-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:-o-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:linear-gradient(to bottom,#5c6165 0,#4b5053 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5c6165', endColorstr='#ff4b5053', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#64686c;border-bottom-color:#64686c;border-top-color:#949699;-webkit-box-shadow:none;box-shadow:none;color:#fff;background-image:-webkit-linear-gradient(top,#72757a 0,#64686c 100%);background-image:-o-linear-gradient(top,#72757a 0,#64686c 100%);background-image:linear-gradient(to bottom,#72757a 0,#64686c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff72757a', endColorstr='#ff64686c', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#505458;border-bottom-color:#65696d;border-right:1px solid #65696d;border-top-color:#64696d;font-weight:600;background-image:-webkit-linear-gradient(top,#585d61 0,#505458 100%);background-image:-o-linear-gradient(top,#585d61 0,#505458 100%);background-image:linear-gradient(to bottom,#585d61 0,#505458 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff585d61', endColorstr='#ff505458', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#5a5e62;border-bottom-color:#6e7276;border-right-color:#6e7276;border-top-color:#6c7276;background-image:-webkit-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:-o-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:linear-gradient(to bottom,#62676b 0,#5a5e62 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62676b', endColorstr='#ff5a5e62', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#65696d;border-bottom-color:#6e7276;border-right-color:#777a7e;border-top-color:#767a7e;background-image:-webkit-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:-o-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:linear-gradient(to bottom,#6b7175 0,#65696d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6b7175', endColorstr='#ff65696d', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#5b6165;color:#fff}.navbar-pf .navbar-utility>li>a{border-left:1px solid #53565b;color:#fff!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#4a5053;border-left-color:#636466}.navbar-pf .navbar-utility>li.open>a{border-left-color:#6c6e70;color:#fff!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .navbar-utility .open .dropdown-menu{border-top-width:0}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.drawer-pf{background-color:#fafafa;border:1px solid #d1d1d1;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);overflow-y:auto;position:absolute;right:0;width:320px;z-index:2}.drawer-pf .panel{border-bottom:none;border-left:none;border-right:none}.drawer-pf .panel-group .panel-heading+.panel-collapse .panel-body{border-top:none;border-bottom:1px solid #d1d1d1;padding:0}.drawer-pf .panel-counter{display:block;font-style:italic;line-height:1.2;padding-left:18px;padding-top:5px}.drawer-pf .panel-heading{border-bottom:1px solid #d1d1d1}.drawer-pf .panel-group{bottom:0;margin-bottom:0;position:absolute;top:25px;width:100%}.drawer-pf .panel-title a{cursor:pointer;display:block}.drawer-pf.drawer-pf-expanded{left:270px;width:inherit}.drawer-pf.drawer-pf-expanded .drawer-pf-toggle-expand:before{content:"\f101"}.drawer-pf-toggle-expand{color:inherit;cursor:pointer;left:0;padding:2px 5px;position:absolute}.drawer-pf-toggle-expand:before{content:"\f100";font-family:FontAwesome}.drawer-pf-toggle-expand:focus,.drawer-pf-toggle-expand:hover{color:inherit;text-decoration:none}.drawer-pf-action .btn-link{color:#0088ce;padding:10px 0}.drawer-pf-action .btn-link:hover{color:#00659c}.drawer-pf-loading{color:#4d5258;font-size:14px;padding:20px 15px}.drawer-pf-notification{border-bottom:1px solid #d1d1d1;padding:15px}.drawer-pf-notification .date{border-right:1px solid #aaa;display:inline-block;line-height:1;margin-right:5px;padding-right:9px}.drawer-pf-notification .pficon{font-size:14px;margin-top:3px}.drawer-pf-notification:last-of-type{border-bottom:none}.drawer-pf-notification:hover{background-color:#def3ff}.drawer-pf-notification.unread .drawer-pf-notification-message{font-weight:700}.drawer-pf-notification.expanded-notification .date{border-right:none;padding-right:0}.drawer-pf-notification-info,.drawer-pf-notification-message{display:block;padding-left:27px;padding-right:19px}.expanded-notification .drawer-pf-notification-info,.expanded-notification .drawer-pf-notification-message{display:inline-block}.drawer-pf-notifications-non-clickable .drawer-pf-notification:hover{background-color:#fff}.drawer-pf-title{background-color:#fafafa;border-bottom:1px solid #d1d1d1;position:absolute;width:318px}.drawer-pf-title h3{font-size:12px;margin:0;padding:6px 15px}.navbar-pf-vertical .drawer-pf{height:calc(100vh - 80px);top:58px}.navbar-pf-vertical .nav .drawer-pf-trigger .drawer-pf-trigger-icon{border-left:1px solid #53565b;border-right:1px solid #53565b;padding-left:15px;padding-right:15px}.navbar-pf-vertical .nav .drawer-pf-trigger.open .drawer-pf-trigger-icon{background-color:#4a5053}.navbar-pf .drawer-pf{height:calc(100vh - 46px);top:26px}.navbar-pf .drawer-pf-trigger-icon{cursor:pointer}.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(3,3,3,.125);box-shadow:inset 0 3px 5px rgba(3,3,3,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#f1f1f1;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2);color:#4d5258;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{font-weight:400}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#bbb;border-top-color:#bbb}.panel-group .panel-heading{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #d1d1d1}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";display:inline-block;font-family:FontAwesome;font-size:13px;margin-right:5px;text-align:center;vertical-align:0;width:8px}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105"}.popover{-webkit-box-shadow:0 2px 2px rgba(3,3,3,.08);box-shadow:0 2px 2px rgba(3,3,3,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(3,3,3,.25);box-shadow:inset 0 0 1px rgba(3,3,3,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{color:#363636;position:absolute;text-align:right}.progress-label-left .progress-bar span{font-size:14px;left:-40px;top:0;width:35px}.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{font-size:11px;overflow:hidden;right:0;text-overflow:ellipsis;white-space:nowrap}.progress-label-right .progress-bar span strong,.progress-label-top-right .progress-bar span strong{font-weight:600}.progress-label-right .progress-bar span{max-width:85px;top:0}.progress-label-top-right .progress-bar span{max-width:47%;top:-30px}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-bar-remaining{background:0 0}.progress-container{position:relative}.progress-container.progress-description-left{padding-left:90px}.progress-container.progress-label-right{padding-right:90px}.progress-description{margin-bottom:10px;max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description-left .progress-description{left:0;margin-bottom:0;max-width:85px;position:absolute;top:0}.progress-description .tooltip{white-space:normal}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .clear:focus{outline:0}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #ececec;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#ececec;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#9c9c9c;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0088ce!important;border-color:#0088ce!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#363636;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#def3ff;border-color:#bee1f4}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions{margin-right:20px}.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d1d1d1}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d1d1d1}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(3,3,3,.25);border-left:4px solid rgba(3,3,3,.25);border-right:4px solid rgba(3,3,3,.25);border-radius:100%;border-top:4px solid rgba(3,3,3,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.spinner.spinner-inverse{border-bottom-color:rgba(255,255,255,.25);border-left-color:rgba(255,255,255,.25);border-right-color:rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.75)}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-inverse{background-image:url(../img/spinner-inverse.gif)}.ie9 .spinner.spinner-inverse-lg{background-image:url(../img/spinner-inverse-lg.gif)}.ie9 .spinner.spinner-inverse-sm{background-image:url(../img/spinner-inverse-sm.gif)}.ie9 .spinner.spinner-inverse-xs{background-image:url(../img/spinner-inverse-xs.gif)}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#363636}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#00659c}.prettyprint ol.linenums{margin-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.table-bordered{border:1px solid #d1d1d1}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#def3ff;border-bottom-color:#7dc3e8}.table-treegrid span.indent{margin-left:10px;margin-right:10px}.table-treegrid span.icon{display:inline-block;font-size:13px;margin-right:5px;min-width:10px;text-align:center}.table-treegrid span.collapse-icon,.table-treegrid span.expand-icon{cursor:pointer}.table-treegrid>tbody>tr.odd{background-color:#f5f5f5}.nav-tabs{font-size:14px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#ededed;color:#252525}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#ededed}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf{font-size:12px}.nav-tabs+.nav-tabs-pf>li:first-child>a{padding-left:15px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#ededed}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #ededed}}.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0088ce}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0088ce}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{font-size:12px;line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}} +\ No newline at end of file -- -2.28.0 +2.26.2 -From 92d2f9691d307cd8572db9c2742cb78c7179896b Mon Sep 17 00:00:00 2001 +From bcc1a38148401ba766d98647a5aba69a0905214e Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 09/93] install/html/ssbrowser.html: Change branding to IPA and +Date: Sun, 7 Oct 2018 12:25:40 +0300 +Subject: [PATCH 2/3] install/ui/less/brand.less: Change branding to IPA and Identity Management --- - install/html/ssbrowser.html | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/html/ssbrowser.html b/install/html/ssbrowser.html -index a48a245..f934dbb 100644 ---- a/install/html/ssbrowser.html -+++ b/install/html/ssbrowser.html -@@ -2,7 +2,7 @@ - <html> - <head> - <meta charset="utf-8"> -- <title>IPA: Identity Policy Audit</title> -+ <title>Identity Management</title> - <script type="text/javascript" src="../ui/js/libs/loader.js"></script> - <script type="text/javascript"> - var dojoConfig = { -@@ -69,7 +69,7 @@ - - <nav class="navbar navbar-default navbar-pf" role="navigation"> - <div class="navbar-header"> -- <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="FreeIPA"></a> -+ <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="Identity Management"></a> - </div> - </nav> - --- -2.28.0 - - -From 540ff1c5860d37c2042112fcaf5b8de237d8c109 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 10/93] install/html/unauthorized.html: Change branding to IPA - and Identity Management - ---- - install/html/unauthorized.html | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/html/unauthorized.html b/install/html/unauthorized.html -index 630982d..b8c64d6 100644 ---- a/install/html/unauthorized.html -+++ b/install/html/unauthorized.html -@@ -2,7 +2,7 @@ - <html> - <head> - <meta charset="utf-8"> -- <title>IPA: Identity Policy Audit</title> -+ <title>Identity Management</title> - <script type="text/javascript" src="../ui/js/libs/loader.js"></script> - <script type="text/javascript"> - var dojoConfig = { -@@ -62,7 +62,7 @@ - - <nav class="navbar navbar-default navbar-pf" role="navigation"> - <div class="navbar-header"> -- <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="FreeIPA"></a> -+ <a class="brand" href="../ui/index.html"><img src="../ui/images/header-logo.png" alt="Identity Management"></a> - </div> - </nav> - --- -2.28.0 - - -From b4b7601be41d0c814d55d64f38cfc3a3c08c1628 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 11/93] install/migration/index.html: Change branding to IPA - and Identity Management - ---- - install/migration/index.html | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/migration/index.html b/install/migration/index.html -index fca517c..b5ac1f6 100644 ---- a/install/migration/index.html -+++ b/install/migration/index.html -@@ -2,7 +2,7 @@ - <html> - <head> - <meta charset="utf-8"> -- <title>IPA: Identity Policy Audit</title> -+ <title>Identity Management</title> - - <!--[if IE]> - <meta id="ie-detector"> --- -2.28.0 - - -From 69b03b7ca83ecb54cd6a8542a92c9c7cb102b3f6 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 12/93] install/share/schema.d/README: Change branding to IPA - and Identity Management - ---- - install/share/schema.d/README | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + install/ui/less/brand.less | 103 ++++++++++++++++++------------------- + 1 file changed, 50 insertions(+), 53 deletions(-) -diff --git a/install/share/schema.d/README b/install/share/schema.d/README -index 19e3e68..2a92ec6 100644 ---- a/install/share/schema.d/README -+++ b/install/share/schema.d/README -@@ -7,8 +7,8 @@ schema files during the run of ipa-server-upgrade utility. Therefore, they are - also installed when upgrade happens within the process of ipa-server-install. - - The directory is installed as /usr/share/ipa/schema.d and is owned by a --freeipa-server-common package. Therefore, a 3rd-party plugin would need to --depend on the freeipa-server-common package if it delivers the schema file(s). -+ipa-server-common package. Therefore, a 3rd-party plugin would need to -+depend on the ipa-server-common package if it delivers the schema file(s). +diff --git a/install/ui/less/brand.less b/install/ui/less/brand.less +index c9030bb..7488eaf 100644 +--- a/install/ui/less/brand.less ++++ b/install/ui/less/brand.less +@@ -20,58 +20,55 @@ - You may place your schema files in a subdirectory too, the code that loads - schema files processes recursively all subdirectories of schema.d. --- -2.28.0 - - -From e8db20893eadd919dd295d65b31e509fca87930c Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 13/93] install/tools/ipa-adtrust-install.in: Change branding - to IPA and Identity Management - ---- - install/tools/ipa-adtrust-install.in | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/tools/ipa-adtrust-install.in b/install/tools/ipa-adtrust-install.in -index 93365cc..707b887 100644 ---- a/install/tools/ipa-adtrust-install.in -+++ b/install/tools/ipa-adtrust-install.in -@@ -141,11 +141,11 @@ def main(): - "==============") - print("This program will setup components needed to establish trust to " - "AD domains for") -- print("the FreeIPA Server.") -+ print("the IPA Server.") - print("") - print("This includes:") - print(" * Configure Samba") -- print(" * Add trust related objects to FreeIPA LDAP server") -+ print(" * Add trust related objects to IPA LDAP server") - # TODO: - # print " * Add a SID to all users and Posix groups" - print("") --- -2.28.0 - - -From dc37f813fce1df41e3bbf5adf3791b32bca3d87c Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 14/93] install/tools/ipa-replica-conncheck.in: Change branding - to IPA and Identity Management - ---- - install/tools/ipa-replica-conncheck.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/ipa-replica-conncheck.in b/install/tools/ipa-replica-conncheck.in -index fdc3224..a749778 100644 ---- a/install/tools/ipa-replica-conncheck.in -+++ b/install/tools/ipa-replica-conncheck.in -@@ -291,7 +291,7 @@ class PortResponder(threading.Thread): - self._sockets = [] - self._close = False - self._close_lock = threading.Lock() -- self.responder_data = b'FreeIPA' -+ self.responder_data = b'IPA' - self.ports_opened = False - self.ports_open_cond = threading.Condition() + // this file should be overridden with brand/platform specific content --- -2.28.0 - - -From 223ff47bcb51ba58dd8123b764dfadfdc28fbaec Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 15/93] install/tools/man/ipa-adtrust-install.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-adtrust-install.1 | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/tools/man/ipa-adtrust-install.1 b/install/tools/man/ipa-adtrust-install.1 -index b110658..f70f316 100644 ---- a/install/tools/man/ipa-adtrust-install.1 -+++ b/install/tools/man/ipa-adtrust-install.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Sumit Bose <sbose@redhat.com> - .\" --.TH "ipa-adtrust-install" "1" "April 11 2017" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-adtrust-install" "1" "April 11 2017" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-adtrust\-install \- Prepare an IPA server to be able to establish trust relationships with AD domains - .SH "SYNOPSIS" -@@ -87,7 +87,7 @@ ldapmodify command info the directory server. - .TP - \fB\-\-add\-agents\fR - Add IPA masters to the list that allows to serve information about --users from trusted forests. Starting with FreeIPA 4.2, a regular IPA master -+users from trusted forests. Starting with IPA 4.2, a regular IPA master - can provide this information to SSSD clients. IPA masters aren't added - to the list automatically as restart of the LDAP service on each of them - is required. The host where ipa\-adtrust\-install is being run is added --- -2.28.0 - - -From 33cde0005c9cb310d07071a6ca6d27fb320af952 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:39 +0300 -Subject: [PATCH 16/93] install/tools/man/ipa-advise.1: Change branding to IPA - and Identity Management - ---- - install/tools/man/ipa-advise.1 | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/tools/man/ipa-advise.1 b/install/tools/man/ipa-advise.1 -index 4c494aa..515bbdd 100644 ---- a/install/tools/man/ipa-advise.1 -+++ b/install/tools/man/ipa-advise.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Tomas Babej <tbabej@redhat.com> - .\" --.TH "ipa-advise" "1" "Jun 10 2013" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-advise" "1" "Jun 10 2013" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-advise \- Provide configurations advice for various use cases. - .SH "SYNOPSIS" -@@ -41,4 +41,4 @@ Log to the given file - .SH "EXIT STATUS" - 0 if the command was successful +-@login-details-border: #777777; ++@img-badge-ie8-height: 44px; ++@img-badge-ie8-width: 137px; ++// @img-bg-login: "bg-login.png"; ++// @img-bg-login-2: "bg-login-2.png"; ++@login-bg-color: #1a1a1a; ++@login-container-bg-color: transparent; ++@login-container-bg-color-rgba: transparent; ++@navbar-pf-bg-color: #393F45; ++@navbar-pf-border-color: #cc0000; ++@navbar-pf-active-color: #fff; ++@navbar-pf-color: #dbdada; ++@navbar-pf-icon-bar-bg-color: #fff; ++@navbar-pf-navbar-header-border-color: #53565b; ++@navbar-pf-navbar-nav-active-bg-color: #454C53; ++@navbar-pf-navbar-nav-active-active-bg-color: #3c434a; ++@navbar-pf-navbar-nav-active-active-open-bg-color: #424950; ++@navbar-pf-navbar-navbar-brand-min-width: 300px; ++@navbar-pf-navbar-navbar-brand-padding: 7px 0 8px; ++@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6; ++@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd; ++@navbar-pf-navbar-primary-active-bg-color-start: #72757a; ++@navbar-pf-navbar-primary-active-bg-color-stop: #64686c; ++@navbar-pf-navbar-primary-active-border-color: #949699; ++@navbar-pf-navbar-primary-bg-color-start: #474c50; ++@navbar-pf-navbar-primary-bg-color-stop: #383f43; ++@navbar-pf-navbar-primary-hover-bg-color-start: #5c6165; ++@navbar-pf-navbar-primary-hover-bg-color-stop: #4b5053; ++@navbar-pf-navbar-primary-hover-border-color: #949699; ++@navbar-pf-navbar-primary-context-active-bg-color-start: #6b7175; ++@navbar-pf-navbar-primary-context-active-bg-color-stop: #65696d; ++@navbar-pf-navbar-primary-context-active-border-color: #6e7276; ++@navbar-pf-navbar-primary-context-active-border-right-color: #777a7e; ++@navbar-pf-navbar-primary-context-active-border-top-color: #767a7e; ++@navbar-pf-navbar-primary-context-bg-color-start: #585d61; ++@navbar-pf-navbar-primary-context-bg-color-stop: #505458; ++@navbar-pf-navbar-primary-context-border-color: #65696d; ++@navbar-pf-navbar-primary-context-border-top-color: #64696d; ++@navbar-pf-navbar-primary-context-hover-bg-color-start: #62676b; ++@navbar-pf-navbar-primary-context-hover-bg-color-stop: #5a5e62; ++@navbar-pf-navbar-primary-context-hover-border-color: #6e7276; ++@navbar-pf-navbar-primary-context-hover-border-top-color: #6c7276; ++@navbar-pf-navbar-utility-border-color: #53565b; ++@navbar-pf-navbar-utility-color: #fff; ++@navbar-pf-navbar-utility-hover-bg-color: #4a5053; ++@navbar-pf-navbar-utility-hover-border-color: #636466; ++@navbar-pf-navbar-utility-open-bg-color: #5b6165; ++@navbar-pf-navbar-utility-open-border-color: #6c6e70; --1 if an error occurred +-.login-pf { +- +- .login-pf-body { +- padding-top: 50px; +- } +- +- #badge img { +- display: none; +- } +- +- #brand { +- position: absolute; +- top: -135px; +- img { +- height: auto; +- } +- } +- +- .container { +- padding-top: 40px; +- +- .details p:first-child { +- border-top: 1px solid @login-details-border; +- } +- } +-} +- +-// 768px == @screen-sm-min +-@media (min-width: 768px) { +- .navbar-pf .navbar-brand { +- padding: 2px 0 3px; +- } +- +- .login-pf .container .details { +- p:first-child { +- border-top: 0; +- } +- border-left: 1px solid @login-details-border; +- } +-} +- +-@media (max-height: 520px) { +- .reset-login-pf-height; +- .login-pf { +- .login-pf-body { +- padding-top: 0; +- } +- #badge { +- margin-top: 0; +- height: 70px; +- } +- } ++.info-page .navbar-header { ++ line-height: inherit; ++ margin-left: 20px; + } \ No newline at end of file -+1 if an error occurred -- -2.28.0 +2.26.2 -From 41eb935c96c0a6495f233fd0934be3e92a19407f Mon Sep 17 00:00:00 2001 +From b9506f826164e757c9b4a694c9ca1bfda921f931 Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy <abokovoy@redhat.com> Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 17/93] install/tools/man/ipa-backup.1: Change branding to IPA +Subject: [PATCH 3/3] install/ui/less/patternfly.less: Change branding to IPA and Identity Management --- - install/tools/man/ipa-backup.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-backup.1 b/install/tools/man/ipa-backup.1 -index 2f0bc9e..77d5d7c 100644 ---- a/install/tools/man/ipa-backup.1 -+++ b/install/tools/man/ipa-backup.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-backup" "1" "Mar 22 2013" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-backup" "1" "Mar 22 2013" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-backup \- Back up an IPA master - .SH "SYNOPSIS" --- -2.28.0 - + install/ui/less/patternfly.less | 48 +++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) -From 1af2634f0f24d36bf9225a1b84e40294b914725f Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 18/93] install/tools/man/ipa-ca-install.1: Change branding to - IPA and Identity Management - ---- - install/tools/man/ipa-ca-install.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-ca-install.1 b/install/tools/man/ipa-ca-install.1 -index 3ebe32c..8e57c00 100644 ---- a/install/tools/man/ipa-ca-install.1 -+++ b/install/tools/man/ipa-ca-install.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-ca-install" "1" "Mar 30 2017" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-ca-install" "1" "Mar 30 2017" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-ca\-install \- Install a CA on a server - .SH "SYNOPSIS" --- -2.28.0 - - -From 8ff8e7e56ce9efd49c597157b70189a76a588a42 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 19/93] install/tools/man/ipa-cacert-manage.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-cacert-manage.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-cacert-manage.1 b/install/tools/man/ipa-cacert-manage.1 -index 3f8c346..c992384 100644 ---- a/install/tools/man/ipa-cacert-manage.1 -+++ b/install/tools/man/ipa-cacert-manage.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Jan Cholasta <jcholast@redhat.com> - .\" --.TH "ipa-cacert-manage" "1" "Aug 12 2013" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-cacert-manage" "1" "Aug 12 2013" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-cacert\-manage \- Manage CA certificates in IPA - .SH "SYNOPSIS" --- -2.28.0 - - -From 3dfaf75f7260a9dceb15089e98dc0d564078432c Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 20/93] install/tools/man/ipa-compat-manage.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-compat-manage.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-compat-manage.1 b/install/tools/man/ipa-compat-manage.1 -index f22b174..2647033 100644 ---- a/install/tools/man/ipa-compat-manage.1 -+++ b/install/tools/man/ipa-compat-manage.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Simo Sorce <ssorce@redhat.com> - .\" --.TH "ipa-compat-manage" "1" "Dec 2 2008" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-compat-manage" "1" "Dec 2 2008" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-compat\-manage \- Enables or disables the schema compatibility plugin - .SH "SYNOPSIS" --- -2.28.0 - - -From 9af2e4cdb0ad3ab9147d0a357153cc55d0bcc481 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 21/93] install/tools/man/ipa-csreplica-manage.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-csreplica-manage.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-csreplica-manage.1 b/install/tools/man/ipa-csreplica-manage.1 -index ab5bfdd..6d03975 100644 ---- a/install/tools/man/ipa-csreplica-manage.1 -+++ b/install/tools/man/ipa-csreplica-manage.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-csreplica-manage" "1" "Jul 14 2011" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-csreplica-manage" "1" "Jul 14 2011" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-csreplica\-manage \- Manage an IPA CS replica - .SH "SYNOPSIS" --- -2.28.0 - - -From b5b6885eb4503f63ced3fe1e9f1741c1ab4c84af Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 22/93] install/tools/man/ipa-dns-install.1: Change branding to - IPA and Identity Management - ---- - install/tools/man/ipa-dns-install.1 | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/tools/man/ipa-dns-install.1 b/install/tools/man/ipa-dns-install.1 -index 14e4cd5..029001e 100644 ---- a/install/tools/man/ipa-dns-install.1 -+++ b/install/tools/man/ipa-dns-install.1 -@@ -1,7 +1,7 @@ - .\" A man page for ipa-dns-install - .\" Copyright (C) 2010-2016 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-dns-install" "1" "Jun 28, 2012" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-dns-install" "1" "Jun 28, 2012" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-dns\-install \- Add DNS as a service to an IPA server - .SH "SYNOPSIS" -@@ -12,7 +12,7 @@ In cases where the IPA server name does not belong to the primary DNS domain and - - IPA provides an integrated DNS server which can be used to simplify IPA deployment. If you decide to use it, IPA will automatically maintain SRV and other service records when you change your topology. - --The DNS component in FreeIPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. -+The DNS component in IPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. - - This command requires that an IPA server is already installed and configured. - --- -2.28.0 - - -From 1a4935f79690a6d4fb0158f854fde1af754edd95 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 23/93] install/tools/man/ipa-kra-install.1: Change branding to - IPA and Identity Management - ---- - install/tools/man/ipa-kra-install.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-kra-install.1 b/install/tools/man/ipa-kra-install.1 -index 6c8523a..5476a4e 100644 ---- a/install/tools/man/ipa-kra-install.1 -+++ b/install/tools/man/ipa-kra-install.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Ade Lee <alee@redhat.com> - .\" --.TH "ipa-kra-install" "1" "May 10 2017" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-kra-install" "1" "May 10 2017" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-kra\-install \- Install a KRA on a server - .SH "SYNOPSIS" --- -2.28.0 - - -From 294662f5ac3ba2c96f0f37b9107f40b7f991590c Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 24/93] install/tools/man/ipa-ldap-updater.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-ldap-updater.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-ldap-updater.1 b/install/tools/man/ipa-ldap-updater.1 -index 4893802..7ead55b 100644 ---- a/install/tools/man/ipa-ldap-updater.1 -+++ b/install/tools/man/ipa-ldap-updater.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-ldap-updater" "1" "Sep 12 2008" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-ldap-updater" "1" "Sep 12 2008" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-ldap\-updater \- Update the IPA LDAP configuration - .SH "SYNOPSIS" --- -2.28.0 - - -From 356e3e24c2df2f8da159be229cd73416b5808097 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 25/93] install/tools/man/ipa-managed-entries.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-managed-entries.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-managed-entries.1 b/install/tools/man/ipa-managed-entries.1 -index 3d5ca22..edaa0a9 100644 ---- a/install/tools/man/ipa-managed-entries.1 -+++ b/install/tools/man/ipa-managed-entries.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Jr Aquino <jr.aquino@citrix.com> - .\" --.TH "ipa-managed-entries" "1" "Feb 06 2012" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-managed-entries" "1" "Feb 06 2012" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-managed\-entries \- Enables or disables the schema Managed Entry plugins - .SH "SYNOPSIS" --- -2.28.0 - - -From 03ab99f72d60f2e8240aa6222939384f227d4ba8 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 26/93] install/tools/man/ipa-nis-manage.1: Change branding to - IPA and Identity Management - ---- - install/tools/man/ipa-nis-manage.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-nis-manage.1 b/install/tools/man/ipa-nis-manage.1 -index 9327848..1107b77 100644 ---- a/install/tools/man/ipa-nis-manage.1 -+++ b/install/tools/man/ipa-nis-manage.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-nis-manage" "1" "April 25 2016" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-nis-manage" "1" "April 25 2016" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-nis\-manage \- Enables or disables the NIS listener plugin - .SH "SYNOPSIS" --- -2.28.0 - - -From d840ef02568c90384dcb597cdc3fa06148401e4b Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 27/93] install/tools/man/ipa-otptoken-import.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-otptoken-import.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-otptoken-import.1 b/install/tools/man/ipa-otptoken-import.1 -index 920a08c..fe91040 100644 ---- a/install/tools/man/ipa-otptoken-import.1 -+++ b/install/tools/man/ipa-otptoken-import.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Nathaniel McCallum <npmccallum@redhat.com> - .\" --.TH "ipa-otptoken-import" "1" "Jun 12 2014" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-otptoken-import" "1" "Jun 12 2014" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-otptoken\-import \- Imports OTP tokens from RFC 6030 XML file - .SH "SYNOPSIS" --- -2.28.0 - - -From e8488e7d4657538a407fcb6af8b65db03acc01f4 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 28/93] install/tools/man/ipa-pkinit-manage.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-pkinit-manage.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-pkinit-manage.1 b/install/tools/man/ipa-pkinit-manage.1 -index 5018ce8..50d63e9 100644 ---- a/install/tools/man/ipa-pkinit-manage.1 -+++ b/install/tools/man/ipa-pkinit-manage.1 -@@ -1,7 +1,7 @@ - .\" - .\" Copyright (C) 2017 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-pkinit-manage" "1" "Jun 05 2017" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-pkinit-manage" "1" "Jun 05 2017" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-pkinit\-manage \- Enables or disables PKINIT - .SH "SYNOPSIS" --- -2.28.0 - - -From 0d46f57eb6b80d9c807f30ca357b5a6e740f1aad Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 29/93] install/tools/man/ipa-replica-conncheck.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-replica-conncheck.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-replica-conncheck.1 b/install/tools/man/ipa-replica-conncheck.1 -index 6451f35..ed441e3 100644 ---- a/install/tools/man/ipa-replica-conncheck.1 -+++ b/install/tools/man/ipa-replica-conncheck.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Martin Kosek <mkosek@redhat.com> - .\" --.TH "ipa-replica-conncheck" "1" "Jun 2 2011" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-replica-conncheck" "1" "Jun 2 2011" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-replica\-conncheck \- Check a replica\-master network connection before installation - .SH "SYNOPSIS" --- -2.28.0 - - -From 3eff0ac28e58ce96c2ba9e439501654cefe7458f Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 30/93] install/tools/man/ipa-replica-install.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-replica-install.1 | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/install/tools/man/ipa-replica-install.1 b/install/tools/man/ipa-replica-install.1 -index 19d1d91..44fce10 100644 ---- a/install/tools/man/ipa-replica-install.1 -+++ b/install/tools/man/ipa-replica-install.1 -@@ -1,7 +1,7 @@ - .\" A man page for ipa-replica-install - .\" Copyright (C) 2008-2016 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-replica-install" "1" "Dec 19 2016" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-replica-install" "1" "Dec 19 2016" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-replica\-install \- Create an IPA replica - .SH "SYNOPSIS" -@@ -12,7 +12,7 @@ Configures a new IPA server that is a replica of the server. Once it has been cr - - Domain level 0 is not supported anymore. - --To create a replica, the machine only needs to be enrolled in the FreeIPA domain first. This process of turning the IPA client into a replica is also referred to as replica promotion. -+To create a replica, the machine only needs to be enrolled in the IPA domain first. This process of turning the IPA client into a replica is also referred to as replica promotion. - - If you're starting with an existing IPA client, simply run ipa\-replica\-install to have it promoted into a replica. The NTP configuration cannot be updated during client promotion. - -@@ -229,7 +229,7 @@ ldapmodify command info the directory server. - .TP - \fB\-\-add\-agents\fR - Add IPA masters to the list that allows to serve information about --users from trusted forests. Starting with FreeIPA 4.2, a regular IPA master -+users from trusted forests. Starting with IPA 4.2, a regular IPA master - can provide this information to SSSD clients. IPA masters aren't added - to the list automatically as restart of the LDAP service on each of them - is required. The host where ipa\-adtrust\-install is being run is added --- -2.28.0 - - -From 2b097ebacacba27dd7af501ab4bdf521e9affac8 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 31/93] install/tools/man/ipa-replica-manage.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-replica-manage.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-replica-manage.1 b/install/tools/man/ipa-replica-manage.1 -index 239f159..2c94278 100644 ---- a/install/tools/man/ipa-replica-manage.1 -+++ b/install/tools/man/ipa-replica-manage.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-replica-manage" "1" "Jul 12 2016" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-replica-manage" "1" "Jul 12 2016" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-replica\-manage \- Manage an IPA replica - .SH "SYNOPSIS" --- -2.28.0 - - -From 78a43b16ab8b2914e243465642fef5de519adbe9 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 32/93] install/tools/man/ipa-restore.1: Change branding to IPA - and Identity Management - ---- - install/tools/man/ipa-restore.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-restore.1 b/install/tools/man/ipa-restore.1 -index 5843d55..bc0755b 100644 ---- a/install/tools/man/ipa-restore.1 -+++ b/install/tools/man/ipa-restore.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-restore" "1" "Mar 22 2013" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-restore" "1" "Mar 22 2013" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-restore \- Restore an IPA master - .SH "SYNOPSIS" --- -2.28.0 - - -From 4c99b9799d6ba16191cb6a8c0bec5c89f2c1ed41 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 33/93] install/tools/man/ipa-server-certinstall.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-server-certinstall.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-server-certinstall.1 b/install/tools/man/ipa-server-certinstall.1 -index 8798819..0aa5315 100644 ---- a/install/tools/man/ipa-server-certinstall.1 -+++ b/install/tools/man/ipa-server-certinstall.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipa-server-certinstall" "1" "Mar 14 2008" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-server-certinstall" "1" "Mar 14 2008" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-server\-certinstall \- Install new SSL server certificates - .SH "SYNOPSIS" --- -2.28.0 - - -From 6a1ad17abeff8606049746caa7bd79bb7d1e8a5d Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 34/93] install/tools/man/ipa-server-install.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-server-install.1 | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/tools/man/ipa-server-install.1 b/install/tools/man/ipa-server-install.1 -index 1a4d2f6..fdb0f4c 100644 ---- a/install/tools/man/ipa-server-install.1 -+++ b/install/tools/man/ipa-server-install.1 -@@ -1,7 +1,7 @@ - .\" A man page for ipa-server-install - .\" Copyright (C) 2008-2017 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-server-install" "1" "Feb 17 2017" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-server-install" "1" "Feb 17 2017" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-server\-install \- Configure an IPA server - .SH "SYNOPSIS" -@@ -172,7 +172,7 @@ Install and configure a KRA on this server. - .SS "DNS OPTIONS" - IPA provides an integrated DNS server which can be used to simplify IPA deployment. If you decide to use it, IPA will automatically maintain SRV and other service records when you change your topology. - --The DNS component in FreeIPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. -+The DNS component in IPA is optional and you may choose to manage all your DNS records manually on another third party DNS server. IPA DNS is not a general-purpose DNS server. If you need advanced features like DNS views, do not deploy IPA DNS. - - .TP - \fB\-\-setup\-dns\fR --- -2.28.0 - - -From 4db5773eb5b53b6f5cf94875241ca3110f0b08f8 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 35/93] install/tools/man/ipa-server-upgrade.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-server-upgrade.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-server-upgrade.1 b/install/tools/man/ipa-server-upgrade.1 -index cbbdc59..3db19b0 100644 ---- a/install/tools/man/ipa-server-upgrade.1 -+++ b/install/tools/man/ipa-server-upgrade.1 -@@ -2,7 +2,7 @@ - .\" Copyright (C) 2015 FreeIPA Contributors see COPYING for license - .\" - --.TH "ipa-server-upgrade" "1" "April 02 2015" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-server-upgrade" "1" "April 02 2015" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-server\-upgrade \- upgrade IPA server - .SH "SYNOPSIS" --- -2.28.0 - - -From cccdfc43e3350f07b09c3ebfc8b42b2fe34fcb11 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 36/93] install/tools/man/ipa-winsync-migrate.1: Change - branding to IPA and Identity Management - ---- - install/tools/man/ipa-winsync-migrate.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-winsync-migrate.1 b/install/tools/man/ipa-winsync-migrate.1 -index 88702ba..1812f63 100644 ---- a/install/tools/man/ipa-winsync-migrate.1 -+++ b/install/tools/man/ipa-winsync-migrate.1 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Tomas Babej <tbabej@redhat.com> - .\" --.TH "ipa-winsync-migrate" "1" "Mar 10 2015" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-winsync-migrate" "1" "Mar 10 2015" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-winsync\-migrate \- Seamless migration of AD users created by winsync to native AD users. - .SH "SYNOPSIS" --- -2.28.0 - - -From 88d658bc5fc1d48974eb81d5b06d8368cc51425e Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 37/93] install/tools/man/ipactl.8: Change branding to IPA and - Identity Management - ---- - install/tools/man/ipactl.8 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipactl.8 b/install/tools/man/ipactl.8 -index fb533aa..d7aaaf8 100644 ---- a/install/tools/man/ipactl.8 -+++ b/install/tools/man/ipactl.8 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@redhat.com> - .\" --.TH "ipactl" "8" "Mar 14 2008" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipactl" "8" "Mar 14 2008" "IPA" "IPA Manual Pages" - .SH "NAME" - ipactl \- IPA Server Control Interface - .SH "SYNOPSIS" --- -2.28.0 - - -From 32f17868c89b47f0ee775279a63e670b44c766d8 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 38/93] install/ui/css/patternfly.css: Change branding to IPA - and Identity Management - ---- - install/ui/css/patternfly.css | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/ui/css/patternfly.css b/install/ui/css/patternfly.css -index ee92053..de574a8 100644 ---- a/install/ui/css/patternfly.css -+++ b/install/ui/css/patternfly.css -@@ -4,4 +4,4 @@ - * - * Copyright 2013 bootstrap-select - * Licensed under the MIT license -- */.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*=span]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*=span].pull-right,.row-fluid .bootstrap-select.btn-group[class*=span].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*=span]):not([class*=col-]):not([class*=form-control]){width:220px}.bootstrap-select{width:220px\9}.bootstrap-select.form-control:not([class*=span]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu li.disabled>a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group[class*=span] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small{color:#64b1d8;color:rgba(255,255,255,.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0}.alert{border-width:1px;padding-left:47px;padding-right:14px;position:relative}.alert .alert-link{color:#0088ce}.alert .alert-link:hover{color:#00659c}.alert>.btn.pull-right{margin-top:-3px}.alert>.pficon{font-size:22px;position:absolute;left:13px;top:10px}.alert .close{opacity:.85;filter:alpha(opacity=85)}.alert .close:focus,.alert .close:hover{opacity:1;filter:alpha(opacity=100)}.alert .pficon-info{color:#4d5258}.alert-dismissable{padding-right:28px}.alert-dismissable .close{right:-13px;top:1px}.badge{margin-left:6px}.nav-pills>li>a>.badge{margin-left:6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7dc3e8}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#0088ce;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6);box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6)}.has-error .bootstrap-select.btn-group .btn{border-color:#c00}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#900;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#ededed!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#8b8d8f;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small{color:#9c9c9c}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#9c9c9c}.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:PatternFlyIcons-webfont}.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;position:relative}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e5e5e5;border-color:#a9a9a9}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#f1f1f1;border-color:#bbb}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#def3ff!important;border-color:#bee1f4!important}.treeview .list-group-item.node-selected{background:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#9c9c9c;content:"\f101";font-family:FontAwesome;font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(3,3,3,.1);box-shadow:0 2px 3px rgba(3,3,3,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#670000}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#8b0000}.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e5e5e5;border-color:#a9a9a9}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f1f1f1;border-color:#bbb}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0,#0088ce 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0088ce;background-image:none;border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0077b5;border-color:#004e78}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0088ce;border-color:#00659c}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs{font-weight:400}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.ColVis_Button:active:focus{outline:0}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #bbb;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #d1d1d1 #f5f5f5;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ededed;border-right-color:#ededed;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d1d1d1;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075);box-shadow:inset 0 1px 1px rgba(3,3,3,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0088ce;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{color:#0088ce!important;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:FontAwesome;font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0088ce;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}table.datatable th:active{outline:0}.caret{font-family:FontAwesome;font-weight:400;height:9px;position:relative;vertical-align:baseline;width:12px}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;text-align:center;top:-1px;right:0}.dropup .caret:before{content:"\f106"}.dropdown-menu .divider{background-color:#ededed;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#bee1f4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0088ce;border-color:#0088ce;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0088ce!important;border-color:#0088ce!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.dropdown>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#def3ff;border-color:#bee1f4}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.dropdown-kebab-pf .btn-link{color:#252525;font-size:16px;line-height:1;padding:4px 0}.dropdown-kebab-pf .btn-link:active,.dropdown-kebab-pf .btn-link:focus,.dropdown-kebab-pf .btn-link:hover{color:#0088ce}.dropdown-kebab-pf .dropdown-menu{left:-15px;margin-top:11px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right{left:auto;right:-15px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:after,.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:before{left:auto;right:6px}.dropdown-kebab-pf .dropdown-menu:after,.dropdown-kebab-pf .dropdown-menu:before{border-bottom-color:#bbb;border-bottom-style:solid;border-bottom-width:10px;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:inline-block;left:6px;position:absolute;top:-11px}.dropdown-kebab-pf .dropdown-menu:after{border-bottom-color:#fff;top:-10px}.dropdown-kebab-pf.dropup .dropdown-menu{margin-bottom:11px;margin-top:0}.dropdown-kebab-pf.dropup .dropdown-menu:after,.dropdown-kebab-pf.dropup .dropdown-menu:before{border-bottom:none;border-top-color:#bbb;border-top-style:solid;border-top-width:10px;bottom:-11px;top:auto}.dropdown-kebab-pf.dropup .dropdown-menu:after{border-top-color:#fff;bottom:-10px}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../fonts/open-sans/OpenSans-Regular.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('OpenSans-Light'),local('Open Sans Light'),url(../fonts/open-sans/OpenSans-Light.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(../fonts/open-sans/OpenSans-Semibold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../fonts/open-sans/OpenSans-Bold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local('Open Sans Extrabold'),local('OpenSans-Extrabold'),url(../fonts/open-sans/OpenSans-ExtraBold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(../fonts/open-sans/OpenSans-LightItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../fonts/open-sans/OpenSans-Italic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(../fonts/open-sans/OpenSans-SemiboldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../fonts/open-sans/OpenSans-BoldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local('Open Sans Extrabold Italic'),local('OpenSans-ExtraboldItalic'),url(../fonts/open-sans/OpenSans-ExtraBoldItalic.ttf) format('truetype')}.chars-remaining-pf span{font-weight:600;padding-right:5px}.chars-warn-remaining-pf{color:#c00}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f}.form-control[disabled]:hover,.form-control[readonly]:hover,fieldset[disabled] .form-control:hover{border-color:#bbb}.form-control:hover{border-color:#7dc3e8}.has-error .form-control:hover{border-color:#900}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label,.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label,.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#363636}.help-block{margin-bottom:0}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}label{font-weight:600}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0088ce}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#999;border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.right .arrow{border-left-width:0;border-right-color:#999;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{bottom:-10px;border-left-width:0;border-right-color:#fff;content:" ";left:1px}.infotip.left .arrow{border-left-color:#999;border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;bottom:-10px;content:" ";right:1px}.label{border-radius:0;font-size:100%;font-weight:600}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #ededed}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-top:0;border-left:0;border-right:0;margin-bottom:0}.list-group-item-heading{font-weight:600}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{border-top:solid 1px #39a5dc;margin-top:-1px;z-index:auto}.list-group-item.active:first-child{border-top:1px solid #39a5dc!important;margin-top:-1px}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}}.login-pf body{background:#030303 url(../img/bg-login.jpg) repeat-x 50% 0;background-size:auto}@media (min-width:768px){.login-pf body{background-size:100% auto}}.login-pf .container{background-color:rgba(255,255,255,.055);clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid rgba(255,255,255,.3);padding-top:25px;margin-top:25px}@media (min-width:768px){.login-pf .container .details{border-left:1px solid rgba(255,255,255,.3);padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child{margin-bottom:0}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.modal-header{background-color:#f5f5f5;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px;font-weight:700}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.navbar-pf{background:#030303;border:0;border-radius:0;border-top:3px solid #39a5dc;margin-bottom:0;min-height:0}.navbar-pf .navbar-brand{color:#f5f5f5;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #292929;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#232323;color:#f5f5f5}.navbar-pf .navbar-nav>li>a{color:#d1d1d1;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#f5f5f5}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#232323;color:#f5f5f5}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#171717!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#1f1f1f!important;color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#d1d1d1;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#292929;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle{color:#f5f5f5}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#363636;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#9c9c9c}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #292929}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:FontAwesome;font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #292929}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #292929}}@media (min-width:768px){.navbar-pf .navbar-brand{padding:8px 0 7px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:-o-linear-gradient(top,#1d1d1d 0,#030303 100%);background-image:linear-gradient(to bottom,#1d1d1d 0,#030303 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f5f5f5;border-bottom:1px solid #d1d1d1;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0088ce!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#f5f5f5}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#1d1d1d;border-top-color:#5c5c5c;color:#d1d1d1;background-image:-webkit-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:-o-linear-gradient(top,#363636 0,#1d1d1d 100%);background-image:linear-gradient(to bottom,#363636 0,#1d1d1d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#303030;border-bottom-color:#303030;border-top-color:#696969;-webkit-box-shadow:none;box-shadow:none;color:#f5f5f5;background-image:-webkit-linear-gradient(top,#434343 0,#303030 100%);background-image:-o-linear-gradient(top,#434343 0,#303030 100%);background-image:linear-gradient(to bottom,#434343 0,#303030 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#1f1f1f;border-bottom-color:#3e3e3e;border-right:1px solid #3e3e3e;border-top-color:#3b3b3b;font-weight:600;background-image:-webkit-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:-o-linear-gradient(top,#323232 0,#1f1f1f 100%);background-image:linear-gradient(to bottom,#323232 0,#1f1f1f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#323232;border-bottom-color:#4a4a4a;border-right-color:#4a4a4a;border-top-color:#4a4a4a;background-image:-webkit-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:-o-linear-gradient(top,#3f3f3f 0,#323232 100%);background-image:linear-gradient(to bottom,#3f3f3f 0,#323232 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#454545;border-bottom-color:#575757;border-right-color:#575757;border-top-color:#5a5a5a;background-image:-webkit-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:-o-linear-gradient(top,#4c4c4c 0,#454545 100%);background-image:linear-gradient(to bottom,#4c4c4c 0,#454545 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#363636;color:#d1d1d1}.navbar-pf .navbar-utility>li>a{border-left:1px solid #2b2b2b;color:#d1d1d1!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#232323;border-left-color:#373737}.navbar-pf .navbar-utility>li.open>a{border-left-color:#444;color:#f5f5f5!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .navbar-utility .open .dropdown-menu{border-top-width:0}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.drawer-pf{background-color:#fafafa;border:1px solid #d1d1d1;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);overflow-y:auto;position:absolute;right:0;width:320px;z-index:2}.drawer-pf .panel{border-bottom:none;border-left:none;border-right:none}.drawer-pf .panel-group .panel-heading+.panel-collapse .panel-body{border-top:none;border-bottom:1px solid #d1d1d1;padding:0}.drawer-pf .panel-counter{display:block;font-style:italic;line-height:1.2;padding-left:18px;padding-top:5px}.drawer-pf .panel-heading{border-bottom:1px solid #d1d1d1}.drawer-pf .panel-group{bottom:0;margin-bottom:0;position:absolute;top:25px;width:100%}.drawer-pf .panel-title a{cursor:pointer;display:block}.drawer-pf.drawer-pf-expanded{left:270px;width:inherit}.drawer-pf.drawer-pf-expanded .drawer-pf-toggle-expand:before{content:"\f101"}.drawer-pf-toggle-expand{color:inherit;cursor:pointer;left:0;padding:2px 5px;position:absolute}.drawer-pf-toggle-expand:before{content:"\f100";font-family:FontAwesome}.drawer-pf-toggle-expand:focus,.drawer-pf-toggle-expand:hover{color:inherit;text-decoration:none}.drawer-pf-action .btn-link{color:#0088ce;padding:10px 0}.drawer-pf-action .btn-link:hover{color:#00659c}.drawer-pf-loading{color:#4d5258;font-size:14px;padding:20px 15px}.drawer-pf-notification{border-bottom:1px solid #d1d1d1;padding:15px}.drawer-pf-notification .date{border-right:1px solid #aaa;display:inline-block;line-height:1;margin-right:5px;padding-right:9px}.drawer-pf-notification .pficon{font-size:14px;margin-top:3px}.drawer-pf-notification:last-of-type{border-bottom:none}.drawer-pf-notification:hover{background-color:#def3ff}.drawer-pf-notification.unread .drawer-pf-notification-message{font-weight:700}.drawer-pf-notification.expanded-notification .date{border-right:none;padding-right:0}.drawer-pf-notification-info,.drawer-pf-notification-message{display:block;padding-left:27px;padding-right:19px}.expanded-notification .drawer-pf-notification-info,.expanded-notification .drawer-pf-notification-message{display:inline-block}.drawer-pf-notifications-non-clickable .drawer-pf-notification:hover{background-color:#fff}.drawer-pf-title{background-color:#fafafa;border-bottom:1px solid #d1d1d1;position:absolute;width:318px}.drawer-pf-title h3{font-size:12px;margin:0;padding:6px 15px}.navbar-pf-vertical .drawer-pf{height:calc(100vh - 80px);top:58px}.navbar-pf-vertical .nav .drawer-pf-trigger .drawer-pf-trigger-icon{border-left:1px solid #2b2b2b;border-right:1px solid #2b2b2b;padding-left:15px;padding-right:15px}.navbar-pf-vertical .nav .drawer-pf-trigger.open .drawer-pf-trigger-icon{background-color:#232323}.navbar-pf .drawer-pf{height:calc(100vh - 46px);top:26px}.navbar-pf .drawer-pf-trigger-icon{cursor:pointer}.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(3,3,3,.125);box-shadow:inset 0 3px 5px rgba(3,3,3,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#f1f1f1;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2);color:#4d5258;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{font-weight:400}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#bbb;border-top-color:#bbb}.panel-group .panel-heading{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #d1d1d1}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";display:inline-block;font-family:FontAwesome;font-size:13px;margin-right:5px;text-align:center;vertical-align:0;width:8px}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105"}.popover{-webkit-box-shadow:0 2px 2px rgba(3,3,3,.08);box-shadow:0 2px 2px rgba(3,3,3,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(3,3,3,.25);box-shadow:inset 0 0 1px rgba(3,3,3,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{color:#363636;position:absolute;text-align:right}.progress-label-left .progress-bar span{font-size:14px;left:-40px;top:0;width:35px}.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{font-size:11px;overflow:hidden;right:0;text-overflow:ellipsis;white-space:nowrap}.progress-label-right .progress-bar span strong,.progress-label-top-right .progress-bar span strong{font-weight:600}.progress-label-right .progress-bar span{max-width:85px;top:0}.progress-label-top-right .progress-bar span{max-width:47%;top:-30px}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-bar-remaining{background:0 0}.progress-container{position:relative}.progress-container.progress-description-left{padding-left:90px}.progress-container.progress-label-right{padding-right:90px}.progress-description{margin-bottom:10px;max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description-left .progress-description{left:0;margin-bottom:0;max-width:85px;position:absolute;top:0}.progress-description .tooltip{white-space:normal}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .clear:focus{outline:0}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #ececec;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#ececec;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#9c9c9c;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0088ce!important;border-color:#0088ce!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#363636;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#def3ff;border-color:#bee1f4}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions{margin-right:20px}.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d1d1d1}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d1d1d1}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(3,3,3,.25);border-left:4px solid rgba(3,3,3,.25);border-right:4px solid rgba(3,3,3,.25);border-radius:100%;border-top:4px solid rgba(3,3,3,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.spinner.spinner-inverse{border-bottom-color:rgba(255,255,255,.25);border-left-color:rgba(255,255,255,.25);border-right-color:rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.75)}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-inverse{background-image:url(../img/spinner-inverse.gif)}.ie9 .spinner.spinner-inverse-lg{background-image:url(../img/spinner-inverse-lg.gif)}.ie9 .spinner.spinner-inverse-sm{background-image:url(../img/spinner-inverse-sm.gif)}.ie9 .spinner.spinner-inverse-xs{background-image:url(../img/spinner-inverse-xs.gif)}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#363636}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#00659c}.prettyprint ol.linenums{margin-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.table-bordered{border:1px solid #d1d1d1}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#def3ff;border-bottom-color:#7dc3e8}.table-treegrid span.indent{margin-left:10px;margin-right:10px}.table-treegrid span.icon{display:inline-block;font-size:13px;margin-right:5px;min-width:10px;text-align:center}.table-treegrid span.collapse-icon,.table-treegrid span.expand-icon{cursor:pointer}.table-treegrid>tbody>tr.odd{background-color:#f5f5f5}.nav-tabs{font-size:14px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#ededed;color:#252525}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#ededed}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf{font-size:12px}.nav-tabs+.nav-tabs-pf>li:first-child>a{padding-left:15px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#ededed}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #ededed}}.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0088ce}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0088ce}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{font-size:12px;line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}} -\ No newline at end of file -+ */.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*=span]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*=span].pull-right,.row-fluid .bootstrap-select.btn-group[class*=span].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*=span]):not([class*=col-]):not([class*=form-control]){width:220px}.bootstrap-select{width:220px\9}.bootstrap-select.form-control:not([class*=span]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu li.disabled>a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group[class*=span] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small{color:#64b1d8;color:rgba(255,255,255,.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:400}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0}.alert{border-width:1px;padding-left:47px;padding-right:14px;position:relative}.alert .alert-link{color:#0088ce}.alert .alert-link:hover{color:#00659c}.alert>.btn.pull-right{margin-top:-3px}.alert>.pficon{font-size:22px;position:absolute;left:13px;top:10px}.alert .close{opacity:.85;filter:alpha(opacity=85)}.alert .close:focus,.alert .close:hover{opacity:1;filter:alpha(opacity=100)}.alert .pficon-info{color:#4d5258}.alert-dismissable{padding-right:28px}.alert-dismissable .close{right:-13px;top:1px}.badge{margin-left:6px}.nav-pills>li>a>.badge{margin-left:6px}.bootstrap-select.btn-group.form-control{margin-bottom:0}.bootstrap-select.btn-group .btn{-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-select.btn-group .btn:hover{border-color:#7dc3e8}.bootstrap-select.btn-group .btn .caret{margin-top:-4px}.bootstrap-select.btn-group .btn:focus{border-color:#0088ce;outline:0!important;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6);box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 8px rgba(0,136,206,.6)}.has-error .bootstrap-select.btn-group .btn{border-color:#c00}.has-error .bootstrap-select.btn-group .btn:focus{border-color:#900;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #f33}.has-success .bootstrap-select.btn-group .btn{border-color:#3c763d}.has-success .bootstrap-select.btn-group .btn:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #67b168}.has-warning .bootstrap-select.btn-group .btn{border-color:#ec7a08}.has-warning .bootstrap-select.btn-group .btn:focus{border-color:#bb6106;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60;box-shadow:inset 0 1px 1px rgba(3,3,3,.075),0 0 6px #faad60}.bootstrap-select.btn-group .dropdown-menu>.active>a,.bootstrap-select.btn-group .dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.bootstrap-select.btn-group .dropdown-menu>.active>a small,.bootstrap-select.btn-group .dropdown-menu>.active>a:active small{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.disabled>a{color:#9c9c9c!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.bootstrap-select.btn-group .dropdown-menu>.selected>a small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu .divider{background:#ededed!important;margin:4px 1px!important}.bootstrap-select.btn-group .dropdown-menu dt{color:#8b8d8f;font-weight:400;padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li>a.opt{padding:1px 10px}.bootstrap-select.btn-group .dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.bootstrap-select.btn-group .dropdown-menu li a:focus small,.bootstrap-select.btn-group .dropdown-menu li a:hover small{color:#9c9c9c}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small{color:#9c9c9c}.combobox-container.combobox-selected .glyphicon-remove{display:inline-block}.combobox-container .caret{margin-left:0}.combobox-container .combobox::-ms-clear{display:none}.combobox-container .dropdown-menu{margin-top:-1px;width:100%}.combobox-container .glyphicon-remove{display:none;top:auto;width:12px}.combobox-container .glyphicon-remove:before{content:"\e60b";font-family:PatternFlyIcons-webfont}.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;position:relative}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.combobox-container .input-group-addon:focus,.combobox-container .input-group-addon:hover,.open .dropdown-toggle.combobox-container .input-group-addon{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.combobox-container .input-group-addon.active,.combobox-container .input-group-addon:active,.open .dropdown-toggle.combobox-container .input-group-addon{background-image:none}.combobox-container .input-group-addon.active.focus,.combobox-container .input-group-addon.active:focus,.combobox-container .input-group-addon.active:hover,.combobox-container .input-group-addon:active.focus,.combobox-container .input-group-addon:active:focus,.combobox-container .input-group-addon:active:hover,.open .dropdown-toggle.combobox-container .input-group-addon.focus,.open .dropdown-toggle.combobox-container .input-group-addon:focus,.open .dropdown-toggle.combobox-container .input-group-addon:hover{background-color:#e5e5e5;border-color:#a9a9a9}.combobox-container .input-group-addon.disabled,.combobox-container .input-group-addon.disabled.active,.combobox-container .input-group-addon.disabled:active,.combobox-container .input-group-addon.disabled:focus,.combobox-container .input-group-addon.disabled:hover,.combobox-container .input-group-addon[disabled],.combobox-container .input-group-addon[disabled].active,.combobox-container .input-group-addon[disabled]:active,.combobox-container .input-group-addon[disabled]:focus,.combobox-container .input-group-addon[disabled]:hover,fieldset[disabled] .combobox-container .input-group-addon,fieldset[disabled] .combobox-container .input-group-addon.active,fieldset[disabled] .combobox-container .input-group-addon:active,fieldset[disabled] .combobox-container .input-group-addon:focus,fieldset[disabled] .combobox-container .input-group-addon:hover{background-color:#f1f1f1;border-color:#bbb}.combobox-container .input-group-addon:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.treeview .list-group{border-top:0}.treeview .list-group-item{background:0 0;border-bottom:1px solid transparent!important;border-top:1px solid transparent!important;margin-bottom:0;padding:0 10px}.treeview .list-group-item:hover{background:#def3ff!important;border-color:#bee1f4!important}.treeview .list-group-item.node-selected{background:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.treeview span.icon{display:inline-block;font-size:13px;min-width:10px;text-align:center}.treeview span.icon>[class*=fa-angle]{font-size:15px}.treeview span.indent{margin-right:5px}.breadcrumb{padding-left:0}.breadcrumb>.active strong{font-weight:600}.breadcrumb>li{display:inline}.breadcrumb>li+li:before{color:#9c9c9c;content:"\f101";font-family:FontAwesome;font-size:11px;padding:0 9px 0 7px}.btn{-webkit-box-shadow:0 2px 3px rgba(3,3,3,.1);box-shadow:0 2px 3px rgba(3,3,3,.1)}.btn:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1}.btn.disabled:active,.btn[disabled]:active,fieldset[disabled] .btn:active{-webkit-box-shadow:none;box-shadow:none}.btn.disabled.btn-link,.btn[disabled].btn-link,fieldset[disabled] .btn.btn-link{background-color:transparent!important;border:0}.btn-danger{background-color:#a30000;background-image:-webkit-linear-gradient(top,#c00 0,#a30000 100%);background-image:-o-linear-gradient(top,#c00 0,#a30000 100%);background-image:linear-gradient(to bottom,#c00 0,#a30000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0);border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{background-color:#a30000;background-image:none;border-color:#8b0000;color:#fff}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open .dropdown-toggle.btn-danger.focus,.open .dropdown-toggle.btn-danger:focus,.open .dropdown-toggle.btn-danger:hover{background-color:#8a0000;border-color:#670000}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#a30000;border-color:#8b0000}.btn-default{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open .dropdown-toggle.btn-default.focus,.open .dropdown-toggle.btn-default:focus,.open .dropdown-toggle.btn-default:hover{background-color:#e5e5e5;border-color:#a9a9a9}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f1f1f1;border-color:#bbb}.btn-link,.btn-link:active{-webkit-box-shadow:none;box-shadow:none}.btn-primary{background-color:#0088ce;background-image:-webkit-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:-o-linear-gradient(top,#39a5dc 0,#0088ce 100%);background-image:linear-gradient(to bottom,#39a5dc 0,#0088ce 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0);border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{background-color:#0088ce;background-image:none;border-color:#00659c;color:#fff}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open .dropdown-toggle.btn-primary.focus,.open .dropdown-toggle.btn-primary:focus,.open .dropdown-toggle.btn-primary:hover{background-color:#0077b5;border-color:#004e78}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0088ce;border-color:#00659c}.btn-group-xs .btn,.btn-group-xs>.btn,.btn-xs{font-weight:400}.close{text-shadow:none;opacity:.6;filter:alpha(opacity=60)}.close:focus,.close:hover{opacity:.9;filter:alpha(opacity=90)}.ColVis_Button:active:focus{outline:0}.ColVis_catcher{position:absolute;z-index:999}.ColVis_collection{background-color:#fff;border:1px solid #bbb;border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);background-clip:padding-box;list-style:none;margin:-1px 0 0 0;padding:5px 10px;width:150px;z-index:1000}.ColVis_collection label{font-weight:400;margin-bottom:5px;margin-top:5px;padding-left:20px}.ColVis_collectionBackground{background-color:#fff;height:100%;left:0;position:fixed;top:0;width:100%;z-index:998}.dataTables_header{background-color:#f5f5f5;border:1px solid #d1d1d1;border-bottom:none;padding:5px;position:relative;text-align:center}.dataTables_header .btn{-webkit-box-shadow:none;box-shadow:none}.dataTables_header .ColVis{position:absolute;right:5px;text-align:left;top:5px}.dataTables_header .ColVis+.dataTables_info{padding-right:30px}.dataTables_header .dataTables_filter{position:absolute}.dataTables_header .dataTables_filter input{border:1px solid #bbb;height:24px}@media (max-width:767px){.dataTables_header .dataTables_filter input{width:100px}}.dataTables_header .dataTables_info{padding:2px 0}@media (max-width:480px){.dataTables_header .dataTables_info{text-align:right}}.dataTables_header .dataTables_info b{font-weight:700}.dataTables_footer{background-color:#fff;border:1px solid #d1d1d1;border-top:none;overflow:hidden}.dataTables_paginate{background:#fafafa;float:right;margin:0}.dataTables_paginate .pagination{float:left;margin:0}.dataTables_paginate .pagination>li>span{border-color:#fff #d1d1d1 #f5f5f5;border-width:0 1px;font-size:16px;font-weight:400;padding:0;text-align:center;width:31px}.dataTables_paginate .pagination>li>span:focus,.dataTables_paginate .pagination>li>span:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination>li.last>span{border-right:none}.dataTables_paginate .pagination>li.disabled>span{background:#f5f5f5;border-left-color:#ededed;border-right-color:#ededed;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dataTables_paginate .pagination-input{float:left;font-size:12px;line-height:1em;padding:4px 15px 0;text-align:right}.dataTables_paginate .pagination-input .paginate_input{border:1px solid #d1d1d1;-webkit-box-shadow:inset 0 1px 1px rgba(3,3,3,.075);box-shadow:inset 0 1px 1px rgba(3,3,3,.075);font-size:12px;font-weight:600;height:19px;margin-right:8px;padding-right:3px;text-align:right;width:30px}.dataTables_paginate .pagination-input .paginate_of{position:relative}.dataTables_paginate .pagination-input .paginate_of b{margin-left:3px}.dataTables_wrapper{margin:20px 0}@media (max-width:767px){.dataTables_wrapper .table-responsive{margin-bottom:0}}.DTCR_clonedTable{background-color:rgba(255,255,255,.7);z-index:202}.DTCR_pointer{background-color:#0088ce;width:1px;z-index:201}table.datatable{margin-bottom:0;max-width:none!important}table.datatable thead .sorting,table.datatable thead .sorting_asc,table.datatable thead .sorting_asc_disabled,table.datatable thead .sorting_desc,table.datatable thead .sorting_desc_disabled{cursor:pointer}table.datatable thead .sorting_asc,table.datatable thead .sorting_desc{color:#0088ce!important;position:relative}table.datatable thead .sorting_asc:after,table.datatable thead .sorting_desc:after{content:"\f107";font-family:FontAwesome;font-size:10px;font-weight:400;height:9px;left:7px;line-height:12px;position:relative;top:2px;vertical-align:baseline;width:12px}table.datatable thead .sorting_asc:before,table.datatable thead .sorting_desc:before{background:#0088ce;content:'';height:2px;position:absolute;left:0;top:0;width:100%}table.datatable thead .sorting_asc:after{content:"\f106";top:-3px}table.datatable th:active{outline:0}.caret{font-family:FontAwesome;font-weight:400;height:9px;position:relative;vertical-align:baseline;width:12px}.caret:before{bottom:0;content:"\f107";left:0;line-height:12px;position:absolute;text-align:center;top:-1px;right:0}.dropup .caret:before{content:"\f106"}.dropdown-menu .divider{background-color:#ededed;height:1px;margin:4px 1px;overflow:hidden}.dropdown-menu>li>a{border-color:transparent;border-style:solid;border-width:1px 0;padding:1px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{border-color:#bee1f4;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>li>a:active{background-color:#0088ce;border-color:#0088ce;color:#fff!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0088ce!important;border-color:#0088ce!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{border-color:transparent}.dropdown-header{padding-left:10px;padding-right:10px;text-transform:uppercase}.btn-group>.dropdown-menu,.dropdown>.dropdown-menu,.input-group-btn>.dropdown-menu{margin-top:-1px}.dropup .dropdown-menu{margin-bottom:-1px}.dropdown-submenu{position:relative}.dropdown-submenu:hover>a{background-color:#def3ff;border-color:#bee1f4}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu.pull-left{float:none!important}.dropdown-submenu.pull-left>.dropdown-menu{left:auto;margin-left:10px;right:100%}.dropdown-submenu>a{padding-right:20px!important}.dropdown-submenu>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:2px}.dropdown-submenu>.dropdown-menu{left:100%;margin-top:0;top:-6px}.dropup .dropdown-submenu>.dropdown-menu{bottom:-5px;top:auto}.open .dropdown-submenu.active>.dropdown-menu{display:block}.dropdown-kebab-pf .btn-link{color:#252525;font-size:16px;line-height:1;padding:4px 0}.dropdown-kebab-pf .btn-link:active,.dropdown-kebab-pf .btn-link:focus,.dropdown-kebab-pf .btn-link:hover{color:#0088ce}.dropdown-kebab-pf .dropdown-menu{left:-15px;margin-top:11px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right{left:auto;right:-15px}.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:after,.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:before{left:auto;right:6px}.dropdown-kebab-pf .dropdown-menu:after,.dropdown-kebab-pf .dropdown-menu:before{border-bottom-color:#bbb;border-bottom-style:solid;border-bottom-width:10px;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:inline-block;left:6px;position:absolute;top:-11px}.dropdown-kebab-pf .dropdown-menu:after{border-bottom-color:#fff;top:-10px}.dropdown-kebab-pf.dropup .dropdown-menu{margin-bottom:11px;margin-top:0}.dropdown-kebab-pf.dropup .dropdown-menu:after,.dropdown-kebab-pf.dropup .dropdown-menu:before{border-bottom:none;border-top-color:#bbb;border-top-style:solid;border-top-width:10px;bottom:-11px;top:auto}.dropdown-kebab-pf.dropup .dropdown-menu:after{border-top-color:#fff;bottom:-10px}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans'),local('OpenSans'),url(../fonts/open-sans/OpenSans-Regular.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('OpenSans-Light'),local('Open Sans Light'),url(../fonts/open-sans/OpenSans-Light.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans Semibold'),local('OpenSans-Semibold'),url(../fonts/open-sans/OpenSans-Semibold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url(../fonts/open-sans/OpenSans-Bold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local('Open Sans Extrabold'),local('OpenSans-Extrabold'),url(../fonts/open-sans/OpenSans-ExtraBold.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local('Open Sans Light Italic'),local('OpenSansLight-Italic'),url(../fonts/open-sans/OpenSans-LightItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local('Open Sans Italic'),local('OpenSans-Italic'),url(../fonts/open-sans/OpenSans-Italic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local('Open Sans Semibold Italic'),local('OpenSans-SemiboldItalic'),url(../fonts/open-sans/OpenSans-SemiboldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local('Open Sans Bold Italic'),local('OpenSans-BoldItalic'),url(../fonts/open-sans/OpenSans-BoldItalic.ttf) format('truetype')}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local('Open Sans Extrabold Italic'),local('OpenSans-ExtraboldItalic'),url(../fonts/open-sans/OpenSans-ExtraBoldItalic.ttf) format('truetype')}.chars-remaining-pf span{font-weight:600;padding-right:5px}.chars-warn-remaining-pf{color:#c00}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f}.form-control[disabled]:hover,.form-control[readonly]:hover,fieldset[disabled] .form-control:hover{border-color:#bbb}.form-control:hover{border-color:#7dc3e8}.has-error .form-control:hover{border-color:#900}.has-success .form-control:hover{border-color:#2b542c}.has-warning .form-control:hover{border-color:#bb6106}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label,.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label,.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#363636}.help-block{margin-bottom:0}.input-group .input-group-btn .btn{-webkit-box-shadow:none;box-shadow:none}label{font-weight:600}.navbar-nav>li>.dropdown-menu.infotip{border-top-width:1px!important;margin-top:10px}@media (max-width:767px){.navbar-pf .navbar-nav .open .dropdown-menu.infotip{background-color:#fff!important;margin-top:0}}.infotip{min-width:235px;padding:0}.infotip .list-group{border-top:0;margin:0;padding:8px 0}.infotip .list-group .list-group-item{border:none;margin:0 15px 0 34px;padding:5px 0}.infotip .list-group .list-group-item>.i{color:#4d5258;font-size:13px;left:-20px;position:absolute;top:8px}.infotip .list-group .list-group-item>a{color:#4d5258;line-height:13px}.infotip .list-group .list-group-item>.close{float:right}.infotip .footer{background-color:#f5f5f5;padding:6px 15px}.infotip .footer a:hover{color:#0088ce}.infotip .arrow,.infotip .arrow:after{border-color:transparent;border-style:solid;display:block;height:0;position:absolute;width:0}.infotip .arrow{border-width:11px}.infotip .arrow:after{border-width:10px;content:""}.infotip.bottom .arrow,.infotip.bottom-left .arrow,.infotip.bottom-right .arrow{border-bottom-color:#999;border-bottom-color:#bbb;border-top-width:0;left:50%;margin-left:-11px;top:-11px}.infotip.bottom .arrow:after,.infotip.bottom-left .arrow:after,.infotip.bottom-right .arrow:after{border-top-width:0;border-bottom-color:#fff;content:" ";margin-left:-10px;top:1px}.infotip.bottom-left .arrow{left:20%}.infotip.bottom-right .arrow{left:80%}.infotip.top .arrow{border-bottom-width:0;border-top-color:#999;border-top-color:#bbb;bottom:-11px;left:50%;margin-left:-11px}.infotip.top .arrow:after{border-bottom-width:0;border-top-color:#f5f5f5;bottom:1px;content:" ";margin-left:-10px}.infotip.right .arrow{border-left-width:0;border-right-color:#999;border-right-color:#bbb;left:-11px;margin-top:-11px;top:50%}.infotip.right .arrow:after{bottom:-10px;border-left-width:0;border-right-color:#fff;content:" ";left:1px}.infotip.left .arrow{border-left-color:#999;border-left-color:#bbb;border-right-width:0;margin-top:-11px;right:-11px;top:50%}.infotip.left .arrow:after{border-left-color:#fff;border-right-width:0;bottom:-10px;content:" ";right:1px}.label{border-radius:0;font-size:100%;font-weight:600}h1 .label,h2 .label,h3 .label,h4 .label,h5 .label,h6 .label{font-size:75%}.list-group{border-top:1px solid #ededed}.list-group .list-group-item:first-child{border-top:0}.list-group-item{border-top:0;border-left:0;border-right:0;margin-bottom:0}.list-group-item-heading{font-weight:600}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{border-top:solid 1px #39a5dc;margin-top:-1px;z-index:auto}.list-group-item.active:first-child{border-top:1px solid #39a5dc!important;margin-top:-1px}.login-pf{height:100%}.login-pf #brand{position:relative;top:-70px}.login-pf #brand img{display:block;height:18px;margin:0 auto;max-width:100%}@media (min-width:768px){.login-pf #brand img{margin:0;text-align:left}}.login-pf #badge{display:block;margin:20px auto 70px;position:relative;text-align:center}@media (min-width:768px){.login-pf #badge{float:right;margin-right:64px;margin-top:50px}}.login-pf body{background:#1a1a1a url(../img/bg-login.jpg) repeat-x 50% 0;background-size:auto}@media (min-width:768px){.login-pf body{background-size:100% auto}}.login-pf .container{background-color:transparent;clear:right;color:#fff;padding-bottom:40px;padding-top:20px;width:auto}@media (min-width:768px){.login-pf .container{bottom:13%;padding-left:80px;position:absolute;width:100%}}.login-pf .container [class^=alert]{background:0 0;color:#fff}.login-pf .container .details p:first-child{border-top:1px solid rgba(255,255,255,.3);padding-top:25px;margin-top:25px}@media (min-width:768px){.login-pf .container .details{border-left:1px solid rgba(255,255,255,.3);padding-left:40px}.login-pf .container .details p:first-child{border-top:0;padding-top:0;margin-top:0}}.login-pf .container .details p{margin-bottom:2px}.login-pf .container .form-horizontal .control-label{font-size:13px;font-weight:400;text-align:left}.login-pf .container .form-horizontal .form-group:last-child,.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child{margin-bottom:0}.login-pf .container .help-block{color:#fff}@media (min-width:768px){.login-pf .container .login{padding-right:40px}}.login-pf .container .submit{text-align:right}.modal-header{background-color:#f5f5f5;border-bottom:none;padding:10px 18px}.modal-header .close{margin-top:2px}.modal-title{font-size:13px;font-weight:700}.modal-footer{border-top:none;margin-top:15px;padding:14px 15px 15px}.modal-footer>.btn{padding-left:10px;padding-right:10px}.modal-footer>.btn>.fa-angle-left{margin-right:5px}.modal-footer>.btn>.fa-angle-right{margin-left:5px}.navbar-pf{background:#393F45;border:0;border-radius:0;border-top:3px solid #c00;margin-bottom:0;min-height:0}.navbar-pf .navbar-brand{color:#fff;height:auto;padding:12px 0;margin:0 0 0 20px}.navbar-pf .navbar-brand img{display:block}.navbar-pf .navbar-collapse{border-top:0;-webkit-box-shadow:none;box-shadow:none;padding:0}.navbar-pf .navbar-header{border-bottom:1px solid #53565b;float:none}.navbar-pf .navbar-nav{margin:0}.navbar-pf .navbar-nav>.active>a,.navbar-pf .navbar-nav>.active>a:focus,.navbar-pf .navbar-nav>.active>a:hover{background-color:#454C53;color:#fff}.navbar-pf .navbar-nav>li>a{color:#dbdada;line-height:1;padding:10px 20px;text-shadow:none}.navbar-pf .navbar-nav>li>a:focus,.navbar-pf .navbar-nav>li>a:hover{color:#fff}.navbar-pf .navbar-nav>.open>a,.navbar-pf .navbar-nav>.open>a:focus,.navbar-pf .navbar-nav>.open>a:hover{background-color:#454C53;color:#fff}@media (max-width:767px){.navbar-pf .navbar-nav .active .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent,.navbar-pf .navbar-nav .open .dropdown-menu{background-color:#3c434a!important;margin-left:0;padding-bottom:0;padding-top:0}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .active .dropdown-menu>.active>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:focus,.navbar-pf .navbar-nav .active .navbar-persistent>.active>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-pf .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#424950!important;color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent>li>a,.navbar-pf .navbar-nav .open .dropdown-menu>li>a{background-color:transparent;border:0;color:#dbdada;outline:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu>li>a:hover,.navbar-pf .navbar-nav .active .navbar-persistent>li>a:hover,.navbar-pf .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu .divider,.navbar-pf .navbar-nav .active .navbar-persistent .divider,.navbar-pf .navbar-nav .open .dropdown-menu .divider{background-color:#53565b;margin:0 1px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header{padding-bottom:0;padding-left:30px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle{color:#fff}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left{float:none!important}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu>a:after,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu>a:after{display:none}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header{padding-left:45px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu{border:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;display:block;float:none;margin:0;min-width:0;padding:0;position:relative;left:auto;right:auto;top:auto}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu>li>a{padding:5px 15px 5px 45px;line-height:20px}.navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu>li>a,.navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu>li>a{padding-left:60px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu{display:block}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu>a:after{display:inline-block!important;position:relative;right:auto;top:1px}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu{display:none}.navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu>a:after{display:none!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu{background-color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active{background-color:#def3ff!important;border-color:#bee1f4!important;color:#363636!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.active>a:active small{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.disabled>a{color:#9c9c9c!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active{background-color:#0088ce!important;border-color:#0088ce!important;color:#fff!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu>.selected>a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li>a.opt{border-bottom:1px solid transparent;border-top:1px solid transparent;color:#363636;padding-left:10px;padding-right:10px}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:active small{color:rgba(255,255,255,.5)!important}.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:focus small,.navbar-pf .navbar-nav .context-bootstrap-select .open>.dropdown-menu li a:hover small{color:#9c9c9c}.navbar-pf .navbar-nav .context-bootstrap-select>.open>.dropdown-menu{padding-bottom:5px;padding-top:5px}}.navbar-pf .navbar-persistent{display:none}.navbar-pf .active>.navbar-persistent{display:block}.navbar-pf .navbar-primary{float:none}.navbar-pf .navbar-primary .context{border-bottom:1px solid #53565b}.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group,.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*=span]{margin:8px 20px 9px;width:auto}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a{position:relative}.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{content:"\f107";display:inline-block;font-family:FontAwesome;font-weight:400}@media (max-width:767px){.navbar-pf .navbar-primary>li>.navbar-persistent>.dropdown-submenu>a:after{height:10px;margin-left:4px;vertical-align:baseline}}.navbar-pf .navbar-toggle{border:0;margin:0;padding:10px 20px}.navbar-pf .navbar-toggle:focus,.navbar-pf .navbar-toggle:hover{background-color:transparent;outline:0}.navbar-pf .navbar-toggle:focus .icon-bar,.navbar-pf .navbar-toggle:hover .icon-bar{-webkit-box-shadow:0 0 3px #fff;box-shadow:0 0 3px #fff}.navbar-pf .navbar-toggle .icon-bar{background-color:#fff}.navbar-pf .navbar-utility{border-bottom:1px solid #53565b}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:36px;position:relative}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:20px;position:absolute;top:10px}@media (max-width:767px){.navbar-pf .navbar-utility>li+li{border-top:1px solid #53565b}}@media (min-width:768px){.navbar-pf .navbar-brand{padding:7px 0 8px}.navbar-pf .navbar-nav>li>a{padding-bottom:14px;padding-top:14px}.navbar-pf .navbar-persistent{font-size:14px}.navbar-pf .navbar-primary{font-size:14px;background-image:-webkit-linear-gradient(top,#474c50 0,#383f43 100%);background-image:-o-linear-gradient(top,#474c50 0,#383f43 100%);background-image:linear-gradient(to bottom,#474c50 0,#383f43 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff474c50', endColorstr='#ff383f43', GradientType=0)}.navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu{top:auto}.navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu{bottom:-5px;top:auto}.navbar-pf .navbar-primary.persistent-secondary>li{position:static}.navbar-pf .navbar-primary.persistent-secondary>li.active{margin-bottom:32px}.navbar-pf .navbar-primary.persistent-secondary>li.active>.navbar-persistent{display:block;left:0;position:absolute}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent{background:#f6f6f6;border-bottom:1px solid #cecdcd;padding:0;width:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent a{text-decoration:none!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active:hover>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active>a:hover{color:#0088ce!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.active .active>a{color:#fff}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu:hover>.dropdown-menu{display:none}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-menu{display:block;left:20px;margin-top:1px;top:100%}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu.open>.dropdown-toggle:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle{padding-right:35px!important}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.dropdown-submenu>.dropdown-toggle:after{position:absolute;right:20px;top:10px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open:before,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:20px;position:absolute;right:20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li.open>a:after,.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li:hover>a:after{border-top-color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a{background-color:transparent;display:block;line-height:1;padding:9px 20px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle{padding-right:35px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a.dropdown-toggle:after{font-size:15px;position:absolute;right:20px;top:9px}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li>a:hover{color:#252525}.navbar-pf .navbar-primary.persistent-secondary>li>.navbar-persistent>li a{color:#4d5258}.navbar-pf .navbar-primary>li>a{border-bottom:1px solid transparent;border-top:1px solid transparent;position:relative;margin:-1px 0 0}.navbar-pf .navbar-primary>li>a:hover{background-color:#4b5053;border-top-color:#949699;color:#dbdada;background-image:-webkit-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:-o-linear-gradient(top,#5c6165 0,#4b5053 100%);background-image:linear-gradient(to bottom,#5c6165 0,#4b5053 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5c6165', endColorstr='#ff4b5053', GradientType=0)}.navbar-pf .navbar-primary>.active>a,.navbar-pf .navbar-primary>.active>a:focus,.navbar-pf .navbar-primary>.active>a:hover,.navbar-pf .navbar-primary>.open>a,.navbar-pf .navbar-primary>.open>a:focus,.navbar-pf .navbar-primary>.open>a:hover{background-color:#64686c;border-bottom-color:#64686c;border-top-color:#949699;-webkit-box-shadow:none;box-shadow:none;color:#fff;background-image:-webkit-linear-gradient(top,#72757a 0,#64686c 100%);background-image:-o-linear-gradient(top,#72757a 0,#64686c 100%);background-image:linear-gradient(to bottom,#72757a 0,#64686c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff72757a', endColorstr='#ff64686c', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option{max-width:160px;text-overflow:ellipsis}.navbar-pf .navbar-primary li.context.dropdown{border-bottom:0}.navbar-pf .navbar-primary li.context.context-bootstrap-select,.navbar-pf .navbar-primary li.context>a{background-color:#505458;border-bottom-color:#65696d;border-right:1px solid #65696d;border-top-color:#64696d;font-weight:600;background-image:-webkit-linear-gradient(top,#585d61 0,#505458 100%);background-image:-o-linear-gradient(top,#585d61 0,#505458 100%);background-image:linear-gradient(to bottom,#585d61 0,#505458 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff585d61', endColorstr='#ff505458', GradientType=0)}.navbar-pf .navbar-primary li.context.context-bootstrap-select:hover,.navbar-pf .navbar-primary li.context>a:hover{background-color:#5a5e62;border-bottom-color:#6e7276;border-right-color:#6e7276;border-top-color:#6c7276;background-image:-webkit-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:-o-linear-gradient(top,#62676b 0,#5a5e62 100%);background-image:linear-gradient(to bottom,#62676b 0,#5a5e62 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62676b', endColorstr='#ff5a5e62', GradientType=0)}.navbar-pf .navbar-primary li.context.open>a{background-color:#65696d;border-bottom-color:#6e7276;border-right-color:#777a7e;border-top-color:#767a7e;background-image:-webkit-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:-o-linear-gradient(top,#6b7175 0,#65696d 100%);background-image:linear-gradient(to bottom,#6b7175 0,#65696d 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff6b7175', endColorstr='#ff65696d', GradientType=0)}.navbar-pf .navbar-utility{border-bottom:0;font-size:11px;position:absolute;right:0;top:0}.navbar-pf .navbar-utility>.active>a,.navbar-pf .navbar-utility>.active>a:focus,.navbar-pf .navbar-utility>.active>a:hover,.navbar-pf .navbar-utility>.open>a,.navbar-pf .navbar-utility>.open>a:focus,.navbar-pf .navbar-utility>.open>a:hover{background:#5b6165;color:#fff}.navbar-pf .navbar-utility>li>a{border-left:1px solid #53565b;color:#fff!important;padding:7px 10px}.navbar-pf .navbar-utility>li>a:hover{background:#4a5053;border-left-color:#636466}.navbar-pf .navbar-utility>li.open>a{border-left-color:#6c6e70;color:#fff!important}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle{padding-left:26px}.navbar-pf .navbar-utility li.dropdown>.dropdown-toggle .pficon-user{left:10px;top:7px}.navbar-pf .navbar-utility .open .dropdown-menu{left:auto;right:0}.navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu{left:auto;right:100%}.navbar-pf .navbar-utility .open .dropdown-menu{border-top-width:0}.navbar-pf .open .dropdown-submenu>.dropdown-menu,.navbar-pf .open.bootstrap-select .dropdown-menu{border-top-width:1px!important}}@media (max-width:360px){.navbar-pf .navbar-brand{margin-left:10px;width:75%}.navbar-pf .navbar-brand img{height:auto;max-width:100%}.navbar-pf .navbar-toggle{padding-left:0}}.drawer-pf{background-color:#fafafa;border:1px solid #d1d1d1;-webkit-box-shadow:0 6px 12px rgba(3,3,3,.175);box-shadow:0 6px 12px rgba(3,3,3,.175);overflow-y:auto;position:absolute;right:0;width:320px;z-index:2}.drawer-pf .panel{border-bottom:none;border-left:none;border-right:none}.drawer-pf .panel-group .panel-heading+.panel-collapse .panel-body{border-top:none;border-bottom:1px solid #d1d1d1;padding:0}.drawer-pf .panel-counter{display:block;font-style:italic;line-height:1.2;padding-left:18px;padding-top:5px}.drawer-pf .panel-heading{border-bottom:1px solid #d1d1d1}.drawer-pf .panel-group{bottom:0;margin-bottom:0;position:absolute;top:25px;width:100%}.drawer-pf .panel-title a{cursor:pointer;display:block}.drawer-pf.drawer-pf-expanded{left:270px;width:inherit}.drawer-pf.drawer-pf-expanded .drawer-pf-toggle-expand:before{content:"\f101"}.drawer-pf-toggle-expand{color:inherit;cursor:pointer;left:0;padding:2px 5px;position:absolute}.drawer-pf-toggle-expand:before{content:"\f100";font-family:FontAwesome}.drawer-pf-toggle-expand:focus,.drawer-pf-toggle-expand:hover{color:inherit;text-decoration:none}.drawer-pf-action .btn-link{color:#0088ce;padding:10px 0}.drawer-pf-action .btn-link:hover{color:#00659c}.drawer-pf-loading{color:#4d5258;font-size:14px;padding:20px 15px}.drawer-pf-notification{border-bottom:1px solid #d1d1d1;padding:15px}.drawer-pf-notification .date{border-right:1px solid #aaa;display:inline-block;line-height:1;margin-right:5px;padding-right:9px}.drawer-pf-notification .pficon{font-size:14px;margin-top:3px}.drawer-pf-notification:last-of-type{border-bottom:none}.drawer-pf-notification:hover{background-color:#def3ff}.drawer-pf-notification.unread .drawer-pf-notification-message{font-weight:700}.drawer-pf-notification.expanded-notification .date{border-right:none;padding-right:0}.drawer-pf-notification-info,.drawer-pf-notification-message{display:block;padding-left:27px;padding-right:19px}.expanded-notification .drawer-pf-notification-info,.expanded-notification .drawer-pf-notification-message{display:inline-block}.drawer-pf-notifications-non-clickable .drawer-pf-notification:hover{background-color:#fff}.drawer-pf-title{background-color:#fafafa;border-bottom:1px solid #d1d1d1;position:absolute;width:318px}.drawer-pf-title h3{font-size:12px;margin:0;padding:6px 15px}.navbar-pf-vertical .drawer-pf{height:calc(100vh - 80px);top:58px}.navbar-pf-vertical .nav .drawer-pf-trigger .drawer-pf-trigger-icon{border-left:1px solid #53565b;border-right:1px solid #53565b;padding-left:15px;padding-right:15px}.navbar-pf-vertical .nav .drawer-pf-trigger.open .drawer-pf-trigger-icon{background-color:#4a5053}.navbar-pf .drawer-pf{height:calc(100vh - 46px);top:26px}.navbar-pf .drawer-pf-trigger-icon{cursor:pointer}.pager li>a,.pager li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;font-weight:600;line-height:22px;padding:2px 14px}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>a:focus,.pager li>a:hover,.pager li>span.active,.pager li>span:active,.pager li>span:focus,.pager li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pager li>a,.open .dropdown-toggle.pager li>span,.pager li>a.active,.pager li>a:active,.pager li>span.active,.pager li>span:active{background-image:none}.open .dropdown-toggle.pager li>a.focus,.open .dropdown-toggle.pager li>a:focus,.open .dropdown-toggle.pager li>a:hover,.open .dropdown-toggle.pager li>span.focus,.open .dropdown-toggle.pager li>span:focus,.open .dropdown-toggle.pager li>span:hover,.pager li>a.active.focus,.pager li>a.active:focus,.pager li>a.active:hover,.pager li>a:active.focus,.pager li>a:active:focus,.pager li>a:active:hover,.pager li>span.active.focus,.pager li>span.active:focus,.pager li>span.active:hover,.pager li>span:active.focus,.pager li>span:active:focus,.pager li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pager li>a.disabled,.pager li>a.disabled.active,.pager li>a.disabled:active,.pager li>a.disabled:focus,.pager li>a.disabled:hover,.pager li>a[disabled],.pager li>a[disabled].active,.pager li>a[disabled]:active,.pager li>a[disabled]:focus,.pager li>a[disabled]:hover,.pager li>span.disabled,.pager li>span.disabled.active,.pager li>span.disabled:active,.pager li>span.disabled:focus,.pager li>span.disabled:hover,.pager li>span[disabled],.pager li>span[disabled].active,.pager li>span[disabled]:active,.pager li>span[disabled]:focus,.pager li>span[disabled]:hover,fieldset[disabled] .pager li>a,fieldset[disabled] .pager li>a.active,fieldset[disabled] .pager li>a:active,fieldset[disabled] .pager li>a:focus,fieldset[disabled] .pager li>a:hover,fieldset[disabled] .pager li>span,fieldset[disabled] .pager li>span.active,fieldset[disabled] .pager li>span:active,fieldset[disabled] .pager li>span:focus,fieldset[disabled] .pager li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pager li>a>.i,.pager li>span>.i{font-size:18px;vertical-align:top;margin:2px 0}.pager li>a:hover>a:focus{color:#4d5258}.pager li a:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(3,3,3,.125);box-shadow:inset 0 3px 5px rgba(3,3,3,.125);outline:0}.pager .disabled>a,.pager .disabled>a:active,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{background:#f5f5f5;-webkit-box-shadow:none;box-shadow:none;color:#8b8d8f;cursor:default}.pager .next>a>.i,.pager .next>span>.i{margin-left:5px}.pager .previous>a>.i,.pager .previous>span>.i{margin-right:5px}.pager-sm li>a,.pager-sm li>span{font-weight:400;line-height:16px;padding:1px 10px}.pager-sm li>a>.i,.pager-sm li>span>.i{font-size:12px}.pagination>li>a,.pagination>li>span{background-color:#f1f1f1;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);border-color:#bbb;color:#4d5258;cursor:default;font-weight:600;padding:2px 10px}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span.active,.pagination>li>span:active,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#f1f1f1;background-image:none;border-color:#bbb;color:#4d5258}.open .dropdown-toggle.pagination>li>a,.open .dropdown-toggle.pagination>li>span,.pagination>li>a.active,.pagination>li>a:active,.pagination>li>span.active,.pagination>li>span:active{background-image:none}.open .dropdown-toggle.pagination>li>a.focus,.open .dropdown-toggle.pagination>li>a:focus,.open .dropdown-toggle.pagination>li>a:hover,.open .dropdown-toggle.pagination>li>span.focus,.open .dropdown-toggle.pagination>li>span:focus,.open .dropdown-toggle.pagination>li>span:hover,.pagination>li>a.active.focus,.pagination>li>a.active:focus,.pagination>li>a.active:hover,.pagination>li>a:active.focus,.pagination>li>a:active:focus,.pagination>li>a:active:hover,.pagination>li>span.active.focus,.pagination>li>span.active:focus,.pagination>li>span.active:hover,.pagination>li>span:active.focus,.pagination>li>span:active:focus,.pagination>li>span:active:hover{background-color:#e5e5e5;border-color:#a9a9a9}.pagination>li>a.disabled,.pagination>li>a.disabled.active,.pagination>li>a.disabled:active,.pagination>li>a.disabled:focus,.pagination>li>a.disabled:hover,.pagination>li>a[disabled],.pagination>li>a[disabled].active,.pagination>li>a[disabled]:active,.pagination>li>a[disabled]:focus,.pagination>li>a[disabled]:hover,.pagination>li>span.disabled,.pagination>li>span.disabled.active,.pagination>li>span.disabled:active,.pagination>li>span.disabled:focus,.pagination>li>span.disabled:hover,.pagination>li>span[disabled],.pagination>li>span[disabled].active,.pagination>li>span[disabled]:active,.pagination>li>span[disabled]:focus,.pagination>li>span[disabled]:hover,fieldset[disabled] .pagination>li>a,fieldset[disabled] .pagination>li>a.active,fieldset[disabled] .pagination>li>a:active,fieldset[disabled] .pagination>li>a:focus,fieldset[disabled] .pagination>li>a:hover,fieldset[disabled] .pagination>li>span,fieldset[disabled] .pagination>li>span.active,fieldset[disabled] .pagination>li>span:active,fieldset[disabled] .pagination>li>span:focus,fieldset[disabled] .pagination>li>span:hover{background-color:#f1f1f1;border-color:#bbb}.pagination>li>a>.i,.pagination>li>span>.i{font-size:15px;vertical-align:top;margin:2px 0}.pagination>li>a:active,.pagination>li>span:active{-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2)}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#f1f1f1;border-color:#bbb;-webkit-box-shadow:inset 0 2px 8px rgba(3,3,3,.2);box-shadow:inset 0 2px 8px rgba(3,3,3,.2);color:#4d5258;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{-webkit-box-shadow:none;box-shadow:none;cursor:default;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.pagination-sm>li>a,.pagination-sm>li>span{padding:2px 6px;font-size:11px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:1px;border-top-left-radius:1px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:1px;border-top-right-radius:1px}.pagination-sm>li>a,.pagination-sm>li>span{font-weight:400}.pagination-sm>li>a>.i,.pagination-sm>li>span>.i{font-size:12px;margin-top:2px}.panel-title{font-weight:700}.panel-group .panel{color:#4d5258}.panel-group .panel+.panel{margin-top:-1px}.panel-group .panel-default{border-color:#bbb;border-top-color:#bbb}.panel-group .panel-heading{background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #d1d1d1}.panel-group .panel-title{font-weight:500;line-height:1}.panel-group .panel-title>a{color:#4d5258;font-weight:600}.panel-group .panel-title>a:before{content:"\f107";display:inline-block;font-family:FontAwesome;font-size:13px;margin-right:5px;text-align:center;vertical-align:0;width:8px}.panel-group .panel-title>a:focus{outline:0;text-decoration:none}.panel-group .panel-title>a:hover{text-decoration:none}.panel-group .panel-title>a.collapsed:before{content:"\f105"}.popover{-webkit-box-shadow:0 2px 2px rgba(3,3,3,.08);box-shadow:0 2px 2px rgba(3,3,3,.08);padding:0}.popover-content{color:#4d5258;line-height:18px;padding:10px 14px}.popover-title{border-bottom:none;border-radius:0;color:#4d5258;font-size:13px;font-weight:700;min-height:34px}.popover-title .close{height:22px;position:absolute;right:8px;top:6px}.popover-title.closable{padding-right:30px}@-webkit-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}.progress{-webkit-box-shadow:inset 0 0 1px rgba(3,3,3,.25);box-shadow:inset 0 0 1px rgba(3,3,3,.25)}.progress.progress-label-left,.progress.progress-label-top-right{overflow:visible;position:relative}.progress.progress-label-left{margin-left:40px}.progress.progress-sm{height:14px;margin-bottom:14px}.progress.progress-xs{height:6px;margin-bottom:6px}td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}.progress-bar{box-shadow:none}.progress-label-left .progress-bar span,.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{color:#363636;position:absolute;text-align:right}.progress-label-left .progress-bar span{font-size:14px;left:-40px;top:0;width:35px}.progress-label-right .progress-bar span,.progress-label-top-right .progress-bar span{font-size:11px;overflow:hidden;right:0;text-overflow:ellipsis;white-space:nowrap}.progress-label-right .progress-bar span strong,.progress-label-top-right .progress-bar span strong{font-weight:600}.progress-label-right .progress-bar span{max-width:85px;top:0}.progress-label-top-right .progress-bar span{max-width:47%;top:-30px}.progress-label-left.progress-sm .progress-bar span,.progress-label-top-right.progress-sm .progress-bar span{font-size:12px}.progress-sm .progress-bar{line-height:14px}.progress-xs .progress-bar{line-height:6px}.progress-bar-remaining{background:0 0}.progress-container{position:relative}.progress-container.progress-description-left{padding-left:90px}.progress-container.progress-label-right{padding-right:90px}.progress-description{margin-bottom:10px;max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-description .count{font-size:20px;font-weight:300;line-height:1;margin-right:5px}.progress-description .fa,.progress-description .pficon{font-size:14px;margin-right:3px}.progress-description-left .progress-description{left:0;margin-bottom:0;max-width:85px;position:absolute;top:0}.progress-description .tooltip{white-space:normal}.search-pf.has-button{border-collapse:separate;display:table}.search-pf.has-button .form-group{display:table-cell;width:100%}.search-pf.has-button .form-group .btn{-webkit-box-shadow:none;box-shadow:none;float:left;margin-left:-1px}.search-pf.has-button .form-group .btn.btn-lg{font-size:14.5px}.search-pf.has-button .form-group .btn.btn-sm{font-size:10.7px}.search-pf.has-button .form-group .form-control{float:left}.search-pf .has-clear .clear{background:0 0;background:rgba(255,255,255,0);border:0;height:25px;line-height:1;padding:0;position:absolute;right:1px;top:1px;width:28px}.search-pf .has-clear .clear:focus{outline:0}.search-pf .has-clear .form-control{padding-right:30px}.search-pf .has-clear .form-control::-ms-clear{display:none}.search-pf .has-clear .input-lg+.clear{height:31px;width:28px}.search-pf .has-clear .input-sm+.clear{height:20px;width:28px}.search-pf .has-clear .input-sm+.clear span{font-size:10px}.search-pf .has-clear .search-pf-input-group{position:relative}.sidebar-header{border-bottom:1px solid #ececec;padding-bottom:11px;margin:50px 0 20px}.sidebar-header .actions{margin-top:-2px}.sidebar-pf .sidebar-header+.list-group{border-top:0;margin-top:-10px}.sidebar-pf .sidebar-header+.list-group .list-group-item{background:0 0;border-color:#ececec;padding-left:0}.sidebar-pf .sidebar-header+.list-group .list-group-item-heading{font-size:12px}.sidebar-pf .nav-category h2{color:#9c9c9c;font-size:12px;font-weight:400;line-height:21px;margin:0;padding:8px 0}.sidebar-pf .nav-category+.nav-category{margin-top:10px}.sidebar-pf .nav-pills>li.active>a{background:#0088ce!important;border-color:#0088ce!important;color:#fff}@media (min-width:768px){.sidebar-pf .nav-pills>li.active>a:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}.sidebar-pf .nav-pills>li.active>a .fa{color:#fff}.sidebar-pf .nav-pills>li>a{border-bottom:1px solid transparent;border-radius:0;border-top:1px solid transparent;color:#363636;font-size:13px;line-height:21px;padding:1px 20px}.sidebar-pf .nav-pills>li>a:hover{background:#def3ff;border-color:#bee1f4}.sidebar-pf .nav-pills>li>a .fa{color:#6a7079;font-size:15px;margin-right:10px;text-align:center;vertical-align:middle;width:15px}.sidebar-pf .nav-stacked{margin-left:-20px;margin-right:-20px}.sidebar-pf .nav-stacked li+li{margin-top:0}.sidebar-pf .panel{background:0 0}.sidebar-pf .panel-body{padding:6px 20px}.sidebar-pf .panel-body .nav-pills>li>a{padding-left:37px}.sidebar-pf .panel-heading{padding:9px 20px}.sidebar-pf .panel-title{font-size:12px}.sidebar-pf .panel-title>a:before{display:inline-block;margin-left:1px;margin-right:4px;width:9px}.sidebar-pf .panel-title>a.collapsed:before{margin-left:3px;margin-right:2px}@media (min-width:767px){.sidebar-header-bleed-left{margin-left:-20px}.sidebar-header-bleed-left>h2{margin-left:20px}.sidebar-header-bleed-right{margin-right:-20px}.sidebar-header-bleed-right .actions{margin-right:20px}.sidebar-header-bleed-right>h2{margin-right:20px}.sidebar-header-bleed-right+.list-group{margin-right:-20px}.sidebar-pf .panel-group .panel-default,.sidebar-pf .treeview{border-left:0;border-right:0;margin-left:-20px;margin-right:-20px}.sidebar-pf .treeview{margin-top:5px}.sidebar-pf .treeview .list-group-item{padding-left:20px;padding-right:20px}.sidebar-pf .treeview .list-group-item.node-selected:after{content:"\f105";font-family:FontAwesome;display:block;position:absolute;right:10px;top:1px}}@media (min-width:768px){.sidebar-pf{background:#fafafa}.sidebar-pf.sidebar-pf-left{border-right:1px solid #d1d1d1}.sidebar-pf.sidebar-pf-right{border-left:1px solid #d1d1d1}.sidebar-pf>.nav-category,.sidebar-pf>.nav-stacked{margin-top:5px}}@-webkit-keyframes rotation{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(359deg)}}@keyframes rotation{from{transform:rotate(0)}to{transform:rotate(359deg)}}.spinner{-webkit-animation:rotation .6s infinite linear;animation:rotation .6s infinite linear;border-bottom:4px solid rgba(3,3,3,.25);border-left:4px solid rgba(3,3,3,.25);border-right:4px solid rgba(3,3,3,.25);border-radius:100%;border-top:4px solid rgba(3,3,3,.75);height:24px;margin:0 auto;position:relative;width:24px}.spinner.spinner-inline{display:inline-block;margin-right:3px}.spinner.spinner-lg{border-width:5px;height:30px;width:30px}.spinner.spinner-sm{border-width:3px;height:18px;width:18px}.spinner.spinner-xs{border-width:2px;height:12px;width:12px}.spinner.spinner-inverse{border-bottom-color:rgba(255,255,255,.25);border-left-color:rgba(255,255,255,.25);border-right-color:rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.75)}.ie9 .spinner{background:url(../img/spinner.gif) no-repeat;border:0}.ie9 .spinner.spinner-inverse{background-image:url(../img/spinner-inverse.gif)}.ie9 .spinner.spinner-inverse-lg{background-image:url(../img/spinner-inverse-lg.gif)}.ie9 .spinner.spinner-inverse-sm{background-image:url(../img/spinner-inverse-sm.gif)}.ie9 .spinner.spinner-inverse-xs{background-image:url(../img/spinner-inverse-xs.gif)}.ie9 .spinner.spinner-lg{background-image:url(../img/spinner-lg.gif)}.ie9 .spinner.spinner-sm{background-image:url(../img/spinner-sm.gif)}.ie9 .spinner.spinner-xs{background-image:url(../img/spinner-xs.gif)}.prettyprint .atn,.prettyprint .com,.prettyprint .fun,.prettyprint .var{color:#3f9c35}.prettyprint .atv,.prettyprint .str{color:#a30000}.prettyprint .clo,.prettyprint .dec,.prettyprint .kwd,.prettyprint .opn,.prettyprint .pln,.prettyprint .pun{color:#363636}.prettyprint .lit,.prettyprint .tag,.prettyprint .typ{color:#00659c}.prettyprint ol.linenums{margin-bottom:0}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:2px 10px 3px}.table>tbody>tr>td>a:hover,.table>tbody>tr>th>a:hover,.table>tfoot>tr>td>a:hover,.table>tfoot>tr>th>a:hover,.table>thead>tr>td>a:hover,.table>thead>tr>th>a:hover{text-decoration:none}.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>th{font-family:'Open Sans';font-style:normal;font-weight:600}.table>thead{background-clip:padding-box;background-color:#f5f5f5;background-image:-webkit-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:-o-linear-gradient(top,#fafafa 0,#ededed 100%);background-image:linear-gradient(to bottom,#fafafa 0,#ededed 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0)}.table-bordered{border:1px solid #d1d1d1}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #d1d1d1}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:1px}.table-striped>tbody>tr:nth-of-type(even){background-color:#f5f5f5}.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#def3ff;border-bottom-color:#7dc3e8}.table-treegrid span.indent{margin-left:10px;margin-right:10px}.table-treegrid span.icon{display:inline-block;font-size:13px;margin-right:5px;min-width:10px;text-align:center}.table-treegrid span.collapse-icon,.table-treegrid span.expand-icon{cursor:pointer}.table-treegrid>tbody>tr.odd{background-color:#f5f5f5}.nav-tabs{font-size:14px}.nav-tabs>li>a{color:#4d5258;margin-right:-1px;padding-bottom:5px;padding-top:5px}.nav-tabs>li>a:active,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background:0 0;border-color:#ededed;color:#252525}.nav-tabs>li>.dropdown-menu{border-top:0;border-color:#ededed}.nav-tabs>li>.dropdown-menu.pull-right{right:-1px}.nav-tabs+.nav-tabs-pf{font-size:12px}.nav-tabs+.nav-tabs-pf>li:first-child>a{padding-left:15px}.nav-tabs+.nav-tabs-pf>li:first-child>a:before{left:15px!important}.nav-tabs .open>a,.nav-tabs .open>a:focus,.nav-tabs .open>a:hover{background-color:transparent;border-color:#ededed}@media (min-width:768px){.nav-tabs-pf.nav-justified{border-bottom:1px solid #ededed}}.nav-tabs-pf.nav-justified>li:first-child>a{padding-left:15px}.nav-tabs-pf.nav-justified>li>a{border-bottom:0}.nav-tabs-pf.nav-justified>li>a:before{left:0!important;right:0!important}.nav-tabs-pf>li{margin-bottom:0}.nav-tabs-pf>li.active>a:before{background:#0088ce;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li.active>a,.nav-tabs-pf>li.active>a:active,.nav-tabs-pf>li.active>a:focus,.nav-tabs-pf>li.active>a:hover{background-color:transparent;border:0!important;color:#0088ce}.nav-tabs-pf>li.active>a:active:before,.nav-tabs-pf>li.active>a:before,.nav-tabs-pf>li.active>a:focus:before,.nav-tabs-pf>li.active>a:hover:before{background:#0088ce}.nav-tabs-pf>li:first-child>a{padding-left:0}.nav-tabs-pf>li:first-child>a:before{left:0!important}.nav-tabs-pf>li>a{border:0;line-height:1;margin-right:0;padding-bottom:10px;padding-top:10px}.nav-tabs-pf>li>a:active:before,.nav-tabs-pf>li>a:focus:before,.nav-tabs-pf>li>a:hover:before{background:#bbb;bottom:-1px;content:'';display:block;height:2px;left:15px;position:absolute;right:15px}.nav-tabs-pf>li>.dropdown-menu{left:15px;margin-top:1px}.nav-tabs-pf>li>.dropdown-menu.pull-right{left:auto;right:15px}.nav-tabs-pf .open>a,.nav-tabs-pf .open>a:focus,.nav-tabs-pf .open>a:hover{background-color:transparent}.tooltip{font-size:12px;line-height:1.4}.tooltip-inner{padding:7px 12px;text-align:left}.h1,.h2,h1,h2{font-weight:300}.page-header .actions{margin-top:8px}.page-header .actions a>.pficon{margin-right:4px}@media (min-width:767px){.page-header-bleed-left{margin-left:-20px}.page-header-bleed-right{margin-right:-20px}.page-header-bleed-right .actions{margin-right:20px}} -\ No newline at end of file --- -2.28.0 - - -From c69eb7c719c91d5e7f2be2d4d5e471d3111cf2e3 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 39/93] install/ui/index.html: Change branding to IPA and - Identity Management - ---- - install/ui/index.html | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/ui/index.html b/install/ui/index.html -index bc0f0cd..d1eacaf 100644 ---- a/install/ui/index.html -+++ b/install/ui/index.html -@@ -2,7 +2,7 @@ - <html> - <head> - <meta charset="utf-8"> -- <title>IPA: Identity Policy Audit</title> -+ <title>Identity Management</title> - - <!--[if IE]> - <meta id="ie-detector"> --- -2.28.0 - - -From a773fe485555a73d594116fc9f1acc7d28728a0c Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 40/93] install/ui/less/brand.less: Change branding to IPA and - Identity Management - ---- - install/ui/less/brand.less | 103 ++++++++++++++++++------------------- - 1 file changed, 50 insertions(+), 53 deletions(-) - -diff --git a/install/ui/less/brand.less b/install/ui/less/brand.less -index c9030bb..7488eaf 100644 ---- a/install/ui/less/brand.less -+++ b/install/ui/less/brand.less -@@ -20,58 +20,55 @@ - - // this file should be overridden with brand/platform specific content +diff --git a/install/ui/less/patternfly.less b/install/ui/less/patternfly.less +index a2e30c8..97a8d5c 100644 +--- a/install/ui/less/patternfly.less ++++ b/install/ui/less/patternfly.less +@@ -129,3 +129,51 @@ --@login-details-border: #777777; + // our overrides + @fa-font-path: "../fonts/fontawesome"; ++ +@img-badge-ie8-height: 44px; +@img-badge-ie8-width: 137px; +// @img-bg-login: "bg-login.png"; @@ -1202,2346 +218,6 @@ index c9030bb..7488eaf 100644 +@navbar-pf-navbar-utility-hover-border-color: #636466; +@navbar-pf-navbar-utility-open-bg-color: #5b6165; +@navbar-pf-navbar-utility-open-border-color: #6c6e70; - --.login-pf { -- -- .login-pf-body { -- padding-top: 50px; -- } -- -- #badge img { -- display: none; -- } -- -- #brand { -- position: absolute; -- top: -135px; -- img { -- height: auto; -- } -- } -- -- .container { -- padding-top: 40px; -- -- .details p:first-child { -- border-top: 1px solid @login-details-border; -- } -- } --} -- --// 768px == @screen-sm-min --@media (min-width: 768px) { -- .navbar-pf .navbar-brand { -- padding: 2px 0 3px; -- } -- -- .login-pf .container .details { -- p:first-child { -- border-top: 0; -- } -- border-left: 1px solid @login-details-border; -- } --} -- --@media (max-height: 520px) { -- .reset-login-pf-height; -- .login-pf { -- .login-pf-body { -- padding-top: 0; -- } -- #badge { -- margin-top: 0; -- height: 70px; -- } -- } -+.info-page .navbar-header { -+ line-height: inherit; -+ margin-left: 20px; - } -\ No newline at end of file --- -2.28.0 - - -From b0f0bac0f7cb307de0dcb3b3b70319a67c0cf16a Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 41/93] install/ui/less/patternfly.less: Change branding to IPA - and Identity Management - ---- - install/ui/less/patternfly.less | 48 +++++++++++++++++++++++++++++++++ - 1 file changed, 48 insertions(+) - -diff --git a/install/ui/less/patternfly.less b/install/ui/less/patternfly.less -index a2e30c8..97a8d5c 100644 ---- a/install/ui/less/patternfly.less -+++ b/install/ui/less/patternfly.less -@@ -129,3 +129,51 @@ - - // our overrides - @fa-font-path: "../fonts/fontawesome"; -+ -+@img-badge-ie8-height: 44px; -+@img-badge-ie8-width: 137px; -+// @img-bg-login: "bg-login.png"; -+// @img-bg-login-2: "bg-login-2.png"; -+@login-bg-color: #1a1a1a; -+@login-container-bg-color: transparent; -+@login-container-bg-color-rgba: transparent; -+@navbar-pf-bg-color: #393F45; -+@navbar-pf-border-color: #cc0000; -+@navbar-pf-active-color: #fff; -+@navbar-pf-color: #dbdada; -+@navbar-pf-icon-bar-bg-color: #fff; -+@navbar-pf-navbar-header-border-color: #53565b; -+@navbar-pf-navbar-nav-active-bg-color: #454C53; -+@navbar-pf-navbar-nav-active-active-bg-color: #3c434a; -+@navbar-pf-navbar-nav-active-active-open-bg-color: #424950; -+@navbar-pf-navbar-navbar-brand-min-width: 300px; -+@navbar-pf-navbar-navbar-brand-padding: 7px 0 8px; -+@navbar-pf-navbar-navbar-persistent-bg-color: #f6f6f6; -+@navbar-pf-navbar-navbar-persistent-border-color: #cecdcd; -+@navbar-pf-navbar-primary-active-bg-color-start: #72757a; -+@navbar-pf-navbar-primary-active-bg-color-stop: #64686c; -+@navbar-pf-navbar-primary-active-border-color: #949699; -+@navbar-pf-navbar-primary-bg-color-start: #474c50; -+@navbar-pf-navbar-primary-bg-color-stop: #383f43; -+@navbar-pf-navbar-primary-hover-bg-color-start: #5c6165; -+@navbar-pf-navbar-primary-hover-bg-color-stop: #4b5053; -+@navbar-pf-navbar-primary-hover-border-color: #949699; -+@navbar-pf-navbar-primary-context-active-bg-color-start: #6b7175; -+@navbar-pf-navbar-primary-context-active-bg-color-stop: #65696d; -+@navbar-pf-navbar-primary-context-active-border-color: #6e7276; -+@navbar-pf-navbar-primary-context-active-border-right-color: #777a7e; -+@navbar-pf-navbar-primary-context-active-border-top-color: #767a7e; -+@navbar-pf-navbar-primary-context-bg-color-start: #585d61; -+@navbar-pf-navbar-primary-context-bg-color-stop: #505458; -+@navbar-pf-navbar-primary-context-border-color: #65696d; -+@navbar-pf-navbar-primary-context-border-top-color: #64696d; -+@navbar-pf-navbar-primary-context-hover-bg-color-start: #62676b; -+@navbar-pf-navbar-primary-context-hover-bg-color-stop: #5a5e62; -+@navbar-pf-navbar-primary-context-hover-border-color: #6e7276; -+@navbar-pf-navbar-primary-context-hover-border-top-color: #6c7276; -+@navbar-pf-navbar-utility-border-color: #53565b; -+@navbar-pf-navbar-utility-color: #fff; -+@navbar-pf-navbar-utility-hover-bg-color: #4a5053; -+@navbar-pf-navbar-utility-hover-border-color: #636466; -+@navbar-pf-navbar-utility-open-bg-color: #5b6165; -+@navbar-pf-navbar-utility-open-border-color: #6c6e70; --- -2.28.0 - - -From 8373bb029e9f01647643174ec6cd35cf29a4140b Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 42/93] install/ui/reset_password.html: Change branding to IPA - and Identity Management - ---- - install/ui/reset_password.html | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/ui/reset_password.html b/install/ui/reset_password.html -index e5700c9..a4ea1ce 100644 ---- a/install/ui/reset_password.html -+++ b/install/ui/reset_password.html -@@ -2,7 +2,7 @@ - <html> - <head> - <meta charset="utf-8"> -- <title>IPA: Identity Policy Audit</title> -+ <title>Identity Management</title> - - <!--[if IE]> - <meta id="ie-detector"> --- -2.28.0 - - -From 7aa607335fa7fd1b95a5b5bb44674f3e1f45ddac Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 43/93] install/ui/src/freeipa/widgets/App.js: Change branding - to IPA and Identity Management - ---- - install/ui/src/freeipa/widgets/App.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/ui/src/freeipa/widgets/App.js b/install/ui/src/freeipa/widgets/App.js -index 3a13955..b0f7588 100644 ---- a/install/ui/src/freeipa/widgets/App.js -+++ b/install/ui/src/freeipa/widgets/App.js -@@ -187,7 +187,7 @@ define(['dojo/_base/declare', - - construct.create('img', { - src: 'images/header-logo.png', -- alt: 'FreeIPA' // TODO: replace with configuration value -+ alt: 'Identity Management' // TODO: replace with configuration value - }, this.brand_node); - - return this.brand_node; --- -2.28.0 - - -From 47e67dd83c26507fe2a40c7dab437379d891b460 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 44/93] install/ui/sync_otp.html: Change branding to IPA and - Identity Management - ---- - install/ui/sync_otp.html | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/ui/sync_otp.html b/install/ui/sync_otp.html -index 5814b6c..36a51ca 100644 ---- a/install/ui/sync_otp.html -+++ b/install/ui/sync_otp.html -@@ -2,7 +2,7 @@ - <html> - <head> - <meta charset="utf-8"> -- <title>IPA: Identity Policy Audit</title> -+ <title>Identity Management</title> - - <!--[if IE]> - <meta id="ie-detector"> --- -2.28.0 - - -From b87532edeebde90e4b293dff3e6ec4d14fe85d08 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 45/93] install/ui/test/data/ipa_init_commands.json: Change - branding to IPA and Identity Management - ---- - install/ui/test/data/ipa_init_commands.json | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/install/ui/test/data/ipa_init_commands.json b/install/ui/test/data/ipa_init_commands.json -index 8fa4999..4b51d97 100644 ---- a/install/ui/test/data/ipa_init_commands.json -+++ b/install/ui/test/data/ipa_init_commands.json -@@ -8689,7 +8689,7 @@ - "label" : "Clock offset", - "confirm" : true, - "alwaysask" : false, -- "doc" : "TOTP token / FreeIPA server time difference", -+ "doc" : "TOTP token / IPA server time difference", - "deprecated" : false, - "flags" : [ - "no_update" -@@ -29875,7 +29875,7 @@ - "primary_key" : false, - "alwaysask" : false, - "deprecated" : false, -- "doc" : "TOTP token / FreeIPA server time difference", -+ "doc" : "TOTP token / IPA server time difference", - "flags" : [ - "no_update" - ], --- -2.28.0 - - -From 72fea1fb9d0de429cb8f2b1774dfd0df8d0ee685 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 46/93] install/ui/test/data/ipa_init_objects.json: Change - branding to IPA and Identity Management - ---- - install/ui/test/data/ipa_init_objects.json | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/ui/test/data/ipa_init_objects.json b/install/ui/test/data/ipa_init_objects.json -index 6f9b13e..08aaafd 100644 ---- a/install/ui/test/data/ipa_init_objects.json -+++ b/install/ui/test/data/ipa_init_objects.json -@@ -21190,7 +21190,7 @@ - "autofill" : true, - "multivalue" : false, - "deprecated" : false, -- "doc" : "TOTP token / FreeIPA server time difference", -+ "doc" : "TOTP token / IPA server time difference", - "primary_key" : false, - "cli_metavar" : "INT", - "default" : 0, --- -2.28.0 - - -From 29125fa720c618e7ee73f0613138dd250fca2e5d Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 47/93] ipaclient/install/client.py: Change branding to IPA and - Identity Management - ---- - ipaclient/install/client.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaclient/install/client.py b/ipaclient/install/client.py -index 175a56c..e6f364d 100644 ---- a/ipaclient/install/client.py -+++ b/ipaclient/install/client.py -@@ -2069,7 +2069,7 @@ def install_check(options): - global client_domain - global cli_basedn - -- print("This program will set up FreeIPA client.") -+ print("This program will set up IPA client.") - print("Version {}".format(version.VERSION)) - print("") - --- -2.28.0 - - -From 419fba1f044fd8bae44e0345d4a1553e01e69bdd Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:40 +0300 -Subject: [PATCH 48/93] ipaclient/remote_plugins/2_114/otptoken.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_114/otptoken.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ipaclient/remote_plugins/2_114/otptoken.py b/ipaclient/remote_plugins/2_114/otptoken.py -index 632c97e..d3edb58 100644 ---- a/ipaclient/remote_plugins/2_114/otptoken.py -+++ b/ipaclient/remote_plugins/2_114/otptoken.py -@@ -132,7 +132,7 @@ class otptoken(Object): - 'ipatokentotpclockoffset', - required=False, - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - ), - parameters.Int( - 'ipatokentotptimestep', -@@ -263,7 +263,7 @@ class otptoken_add(Method): - required=False, - cli_name='offset', - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - default=0, - autofill=True, - ), -@@ -553,7 +553,7 @@ class otptoken_find(Method): - required=False, - cli_name='offset', - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - default=0, - ), - parameters.Int( --- -2.28.0 - - -From 9ee6cabb2996ce6ebf34a3d521c854aab8de92a2 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 49/93] ipaclient/remote_plugins/2_156/otptoken.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_156/otptoken.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ipaclient/remote_plugins/2_156/otptoken.py b/ipaclient/remote_plugins/2_156/otptoken.py -index 0b2b54c..e674d46 100644 ---- a/ipaclient/remote_plugins/2_156/otptoken.py -+++ b/ipaclient/remote_plugins/2_156/otptoken.py -@@ -132,7 +132,7 @@ class otptoken(Object): - 'ipatokentotpclockoffset', - required=False, - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - ), - parameters.Int( - 'ipatokentotptimestep', -@@ -263,7 +263,7 @@ class otptoken_add(Method): - required=False, - cli_name='offset', - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - default=0, - autofill=True, - ), -@@ -553,7 +553,7 @@ class otptoken_find(Method): - required=False, - cli_name='offset', - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - default=0, - ), - parameters.Int( --- -2.28.0 - - -From 61cfaa8ab75ed6075076b8da960382fc4e76a35d Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 50/93] ipaclient/remote_plugins/2_164/otptoken.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_164/otptoken.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ipaclient/remote_plugins/2_164/otptoken.py b/ipaclient/remote_plugins/2_164/otptoken.py -index 0b2b54c..e674d46 100644 ---- a/ipaclient/remote_plugins/2_164/otptoken.py -+++ b/ipaclient/remote_plugins/2_164/otptoken.py -@@ -132,7 +132,7 @@ class otptoken(Object): - 'ipatokentotpclockoffset', - required=False, - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - ), - parameters.Int( - 'ipatokentotptimestep', -@@ -263,7 +263,7 @@ class otptoken_add(Method): - required=False, - cli_name='offset', - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - default=0, - autofill=True, - ), -@@ -553,7 +553,7 @@ class otptoken_find(Method): - required=False, - cli_name='offset', - label=_(u'Clock offset'), -- doc=_(u'TOTP token / FreeIPA server time difference'), -+ doc=_(u'TOTP token / IPA server time difference'), - default=0, - ), - parameters.Int( --- -2.28.0 - - -From 82b07fb868dce69b7f1531b9b518f168531113fc Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 51/93] ipalib/pkcs10.py: Change branding to IPA and Identity - Management - ---- - ipalib/pkcs10.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipalib/pkcs10.py b/ipalib/pkcs10.py -index 2756c85..590ce07 100644 ---- a/ipalib/pkcs10.py -+++ b/ipalib/pkcs10.py -@@ -2,7 +2,7 @@ from __future__ import print_function - import sys - - print( -- "ipalib.pkcs10 module is deprecated and will be removed in FreeIPA 4.6. " -+ "ipalib.pkcs10 module is deprecated and will be removed in IPA 4.6. " - "To load CSRs, please, use python-cryptography instead.", - file=sys.stderr - ) --- -2.28.0 - - -From df262a92dc2ea0db0bd4902a196f0867c682fd45 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 52/93] ipalib/rpc.py: Change branding to IPA and Identity - Management - ---- - ipalib/rpc.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipalib/rpc.py b/ipalib/rpc.py -index 01746cb..c3d0513 100644 ---- a/ipalib/rpc.py -+++ b/ipalib/rpc.py -@@ -282,7 +282,7 @@ class _JSONPrimer(dict): - - Prepare a data structure for JSON serialization. In an ideal world, priming - could be handled by the default hook of json.dumps(). Unfortunately the -- hook treats Python 2 str as text while FreeIPA considers str as bytes. -+ hook treats Python 2 str as text while IPA considers str as bytes. - - The primer uses a couple of tricks to archive maximum performance: - --- -2.28.0 - - -From 969752d92a1f20cf6fb777c43193edf94c8d9833 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 53/93] ipalib/util.py: Change branding to IPA and Identity - Management - ---- - ipalib/util.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipalib/util.py b/ipalib/util.py -index e3a510f..f63ae1b 100644 ---- a/ipalib/util.py -+++ b/ipalib/util.py -@@ -242,7 +242,7 @@ def normalize_zone(zone): - def get_proper_tls_version_span(tls_version_min, tls_version_max): - """ - This function checks whether the given TLS versions are known in -- FreeIPA and that these versions fulfill the requirements for minimal -+ IPA and that these versions fulfill the requirements for minimal - TLS version (see - `ipalib.constants: TLS_VERSIONS, TLS_VERSION_MINIMAL`). - --- -2.28.0 - - -From c72847fcf0feef3a2404c82934e1c67a3d8f3e72 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 54/93] ipalib/x509.py: Change branding to IPA and Identity - Management - ---- - ipalib/x509.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipalib/x509.py b/ipalib/x509.py -index 0ee710f..402e0e9 100644 ---- a/ipalib/x509.py -+++ b/ipalib/x509.py -@@ -92,7 +92,7 @@ SAN_KRB5PRINCIPALNAME = '1.3.6.1.5.2.2' - class IPACertificate: - """ - A proxy class wrapping a python-cryptography certificate representation for -- FreeIPA purposes -+ IPA purposes - """ - def __init__(self, cert, backend=None): - """ --- -2.28.0 - - -From d74025cc8306ea5ab1a75105109b82d4eb31d723 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 55/93] ipaserver/advise/plugins/legacy_clients.py: Change - branding to IPA and Identity Management - ---- - ipaserver/advise/plugins/legacy_clients.py | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/ipaserver/advise/plugins/legacy_clients.py b/ipaserver/advise/plugins/legacy_clients.py -index 2a56922..0e322fe 100644 ---- a/ipaserver/advise/plugins/legacy_clients.py -+++ b/ipaserver/advise/plugins/legacy_clients.py -@@ -94,7 +94,7 @@ class config_redhat_sssd_before_1_9(config_base_legacy_client): - Legacy client configuration for Red Hat based systems, using SSSD. - """ - description = ('Instructions for configuring a system with an old version ' -- 'of SSSD (1.5-1.8) as a FreeIPA client. This set of ' -+ 'of SSSD (1.5-1.8) as a IPA client. This set of ' - 'instructions is targeted for platforms that include ' - 'the authconfig utility, which are all Red Hat based ' - 'platforms.') -@@ -129,7 +129,7 @@ class config_generic_linux_sssd_before_1_9(config_base_legacy_client): - using SSSD. - """ - description = ('Instructions for configuring a system with an old version ' -- 'of SSSD (1.5-1.8) as a FreeIPA client. This set of ' -+ 'of SSSD (1.5-1.8) as a IPA client. This set of ' - 'instructions is targeted for linux systems that do not ' - 'include the authconfig utility.') - -@@ -184,7 +184,7 @@ class config_redhat_nss_pam_ldapd(config_base_legacy_client): - using nss-pam-ldapd. - """ - description = ('Instructions for configuring a system with nss-pam-ldapd ' -- 'as a FreeIPA client. This set of instructions is targeted ' -+ 'as a IPA client. This set of instructions is targeted ' - 'for platforms that include the authconfig utility, which ' - 'are all Red Hat based platforms.') - -@@ -352,7 +352,7 @@ class config_redhat_nss_ldap(config_base_legacy_client): - using nss-ldap. - """ - description = ('Instructions for configuring a system with nss-ldap ' -- 'as a FreeIPA client. This set of instructions is targeted ' -+ 'as a IPA client. This set of instructions is targeted ' - 'for platforms that include the authconfig utility, which ' - 'are all Red Hat based platforms.') - --- -2.28.0 - - -From ddd2cde38edb70271ba593e3b05c77c3c62c075c Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 56/93] ipaserver/advise/plugins/smart_card_auth.py: Change - branding to IPA and Identity Management - ---- - ipaserver/advise/plugins/smart_card_auth.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ipaserver/advise/plugins/smart_card_auth.py b/ipaserver/advise/plugins/smart_card_auth.py -index 0709ec4..a067f36 100644 ---- a/ipaserver/advise/plugins/smart_card_auth.py -+++ b/ipaserver/advise/plugins/smart_card_auth.py -@@ -97,7 +97,7 @@ class config_server_for_smart_card_auth(common_smart_card_auth_config): - """ - - description = ("Instructions for enabling Smart Card authentication on " -- " a single FreeIPA server. Includes Apache configuration, " -+ " a single IPA server. Includes Apache configuration, " - "enabling PKINIT on KDC and configuring WebUI to accept " - "Smart Card auth requests. To enable the feature in the " - "whole topology you have to run the script on each master") -@@ -244,11 +244,11 @@ class config_server_for_smart_card_auth(common_smart_card_auth_config): - @register() - class config_client_for_smart_card_auth(common_smart_card_auth_config): - """ -- Configures smart card authentication on FreeIPA client -+ Configures smart card authentication on IPA client - """ - - description = ("Instructions for enabling Smart Card authentication on " -- " a single FreeIPA client. Configures Smart Card daemon, " -+ " a single IPA client. Configures Smart Card daemon, " - "set the system-wide trust store and configures SSSD to " - "allow smart card logins to desktop") - --- -2.28.0 - - -From ee5e37f145d55536232681eb3cce6e4a17bffcb3 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 57/93] ipaserver/install/dns.py: Change branding to IPA and - Identity Management - ---- - ipaserver/install/dns.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/install/dns.py b/ipaserver/install/dns.py -index 9cd8978..b51b92b 100644 ---- a/ipaserver/install/dns.py -+++ b/ipaserver/install/dns.py -@@ -154,7 +154,7 @@ def install_check(standalone, api, replica, options, hostname): - - if standalone: - print("==============================================================================") -- print("This program will setup DNS for the FreeIPA Server.") -+ print("This program will setup DNS for the IPA Server.") - print("") - print("This includes:") - print(" * Configure DNS (bind)") --- -2.28.0 - - -From bab43eae498b96e574aea685a5790608aca8cd96 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 58/93] ipaserver/install/ipa_kra_install.py: Change branding - to IPA and Identity Management - ---- - ipaserver/install/ipa_kra_install.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ipaserver/install/ipa_kra_install.py b/ipaserver/install/ipa_kra_install.py -index 159f02e..04ac94b 100644 ---- a/ipaserver/install/ipa_kra_install.py -+++ b/ipaserver/install/ipa_kra_install.py -@@ -93,7 +93,7 @@ class KRAInstall(admintool.AdminTool): - if options.uninstall: - sys.exit( - 'ERROR: Standalone KRA uninstallation was removed in ' -- 'FreeIPA 4.5 as it had never worked properly and only caused ' -+ 'IPA 4.5 as it had never worked properly and only caused ' - 'issues.') - else: - return KRAInstaller -@@ -104,7 +104,7 @@ class KRAInstaller(KRAInstall): - - INSTALLER_START_MESSAGE = ''' - =================================================================== -- This program will setup Dogtag KRA for the FreeIPA Server. -+ This program will setup Dogtag KRA for the IPA Server. - - ''' - --- -2.28.0 - - -From ac3620bc3050bad623be7f47de35b76485f3236b Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 59/93] ipaserver/install/plugins/dns.py: Change branding to - IPA and Identity Management - ---- - ipaserver/install/plugins/dns.py | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/ipaserver/install/plugins/dns.py b/ipaserver/install/plugins/dns.py -index ad875b4..9d6ca47 100644 ---- a/ipaserver/install/plugins/dns.py -+++ b/ipaserver/install/plugins/dns.py -@@ -161,11 +161,11 @@ class update_ipaconfigstring_dnsversion_to_ipadnsversion(Updater): - @register() - class update_dnszones(Updater): - """ -- Update all zones to meet requirements in the new FreeIPA versions -+ Update all zones to meet requirements in the new IPA versions - - 1) AllowQuery and AllowTransfer - Set AllowQuery and AllowTransfer ACLs in all zones that may be configured -- in an upgraded FreeIPA instance. -+ in an upgraded IPA instance. - - Upgrading to new version of bind-dyndb-ldap and having these ACLs empty - would result in a leak of potentially sensitive DNS information as -@@ -173,7 +173,7 @@ class update_dnszones(Updater): - or LDAP. - - This plugin disables the zone transfer by default so that it needs to be -- explicitly enabled by FreeIPA Administrator. -+ explicitly enabled by IPA Administrator. - - 2) Update policy - SSH public key support includes a feature to automatically add/update -@@ -272,7 +272,7 @@ class update_dns_limits(Updater): - @register() - class update_master_to_dnsforwardzones(DNSUpdater): - """ -- Update all zones to meet requirements in the new FreeIPA versions -+ Update all zones to meet requirements in the new IPA versions - - All masters zones with specified forwarders, and forward-policy different - than none, will be tranformed to forward zones. -@@ -420,7 +420,7 @@ class update_dnsforward_emptyzones(DNSUpdater): - - BIND ignores conflicting forwarding configuration - when forwarding policy != only. -- bind-dyndb-ldap 9.0+ will do the same so we have to adjust FreeIPA zones -+ bind-dyndb-ldap 9.0+ will do the same so we have to adjust IPA zones - accordingly. - """ - backup_filename = u'dns-forwarding-empty-zones-%Y-%m-%d-%H-%M-%S.ldif' --- -2.28.0 - - -From 2fdf8d86d71afff004b14998649ef45c460fa6e8 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 60/93] ipaserver/install/replication.py: Change branding to - IPA and Identity Management - ---- - ipaserver/install/replication.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/install/replication.py b/ipaserver/install/replication.py -index e8407f3..95bb810 100644 ---- a/ipaserver/install/replication.py -+++ b/ipaserver/install/replication.py -@@ -1799,7 +1799,7 @@ class ReplicationManager: - Ensure that the 'cn=replication managers,cn=sysaccounts' group exists - and contains the principals for master and remote replica - -- On FreeIPA 3.x masters lacking support for nsds5ReplicaBinddnGroup -+ On IPA 3.x masters lacking support for nsds5ReplicaBinddnGroup - attribute, add replica bind DN directly into the replica entry. - """ - my_dn = DN( --- -2.28.0 - - -From 6225f0e67f618460d4327950effdeb2a15f4ba96 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 61/93] ipaserver/install/server/install.py: Change branding to - IPA and Identity Management - ---- - ipaserver/install/server/install.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/install/server/install.py b/ipaserver/install/server/install.py -index c0d33f3..103cfcc 100644 ---- a/ipaserver/install/server/install.py -+++ b/ipaserver/install/server/install.py -@@ -427,7 +427,7 @@ def install_check(installer): - - print("=======================================" - "=======================================") -- print("This program will set up the FreeIPA Server.") -+ print("This program will set up the IPA Server.") - print("Version {}".format(version.VERSION)) - print("") - print("This includes:") --- -2.28.0 - - -From 53f918cd0bc8c7633007986f61a091ee267db634 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 62/93] ipaserver/install/server/replicainstall.py: Change - branding to IPA and Identity Management - ---- - ipaserver/install/server/replicainstall.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/install/server/replicainstall.py b/ipaserver/install/server/replicainstall.py -index f75f5fd..73967a2 100644 ---- a/ipaserver/install/server/replicainstall.py -+++ b/ipaserver/install/server/replicainstall.py -@@ -623,7 +623,7 @@ def check_domain_level_is_supported(current): - above_upper_bound = current > constants.MAX_DOMAIN_LEVEL - - if under_lower_bound or above_upper_bound: -- message = ("This version of FreeIPA does not support " -+ message = ("This version of IPA does not support " - "the Domain Level which is currently set for " - "this domain. The Domain Level needs to be " - "raised before installing a replica with " --- -2.28.0 - - -From f6f4a5cc0f0e4d5ba28aa7ed849fb4ced31e74f3 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 63/93] ipaserver/plugins/certmap.py: Change branding to IPA - and Identity Management - ---- - ipaserver/plugins/certmap.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/plugins/certmap.py b/ipaserver/plugins/certmap.py -index ee8f0c1..cdbc38f 100644 ---- a/ipaserver/plugins/certmap.py -+++ b/ipaserver/plugins/certmap.py -@@ -614,7 +614,7 @@ class certmap_match(Search): - The search is performed using SSSD's DBus interface - Users.ListByCertificate. - SSSD does the lookup based on certificate mapping rules, using -- FreeIPA domain and trusted domains. -+ IPA domain and trusted domains. - :raise RemoteRetrieveError: if DBus returns an exception - """ - sssd = _sssd() --- -2.28.0 - - -From bca6ca20a626caf6425381ce6f90c762fdbad32f Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 64/93] ipaserver/plugins/otptoken.py: Change branding to IPA - and Identity Management - ---- - ipaserver/plugins/otptoken.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/plugins/otptoken.py b/ipaserver/plugins/otptoken.py -index 72ed539..46e4d5e 100644 ---- a/ipaserver/plugins/otptoken.py -+++ b/ipaserver/plugins/otptoken.py -@@ -245,7 +245,7 @@ class otptoken(LDAPObject): - Int('ipatokentotpclockoffset?', - cli_name='offset', - label=_('Clock offset'), -- doc=_('TOTP token / FreeIPA server time difference'), -+ doc=_('TOTP token / IPA server time difference'), - default=0, - autofill=True, - flags=('no_update'), --- -2.28.0 - - -From f17dbc16c6c0a40775c412af960d89982c6dd786 Mon Sep 17 00:00:00 2001 -From: Alexander Bokovoy <abokovoy@redhat.com> -Date: Sun, 7 Oct 2018 12:25:41 +0300 -Subject: [PATCH 65/93] ipaserver/plugins/sudorule.py: Change branding to IPA - and Identity Management - ---- - ipaserver/plugins/sudorule.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ipaserver/plugins/sudorule.py b/ipaserver/plugins/sudorule.py -index 6432159..68baa01 100644 ---- a/ipaserver/plugins/sudorule.py -+++ b/ipaserver/plugins/sudorule.py -@@ -47,7 +47,7 @@ give certain users (or groups of users) the ability to run some (or all) - commands as root or another user while providing an audit trail of the - commands and their arguments. - """) + _(""" --FreeIPA provides a means to configure the various aspects of Sudo: -+IPA provides a means to configure the various aspects of Sudo: - Users: The user(s)/group(s) allowed to invoke Sudo. - Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke Sudo. - Allow Command: The specific command(s) permitted to be run via Sudo. -@@ -60,7 +60,7 @@ An order can be added to a sudorule to control the order in which they - are evaluated (if the client supports it). This order is an integer and - must be unique. - """) + _(""" --FreeIPA provides a designated binddn to use with Sudo located at: -+IPA provides a designated binddn to use with Sudo located at: - uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com - """) + _(""" - To enable the binddn run the following command to set the password: --- -2.28.0 - - -From 412f3c83d2d634a3803eb4dd64d6476690065e43 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Fri, 3 Apr 2020 14:27:35 +0200 -Subject: [PATCH 66/93] client/man/ipa-client-samba.1: Change branding to IPA - and Identity Management - ---- - client/man/ipa-client-samba.1 | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/client/man/ipa-client-samba.1 b/client/man/ipa-client-samba.1 -index ea83715..5ed6c71 100644 ---- a/client/man/ipa-client-samba.1 -+++ b/client/man/ipa-client-samba.1 -@@ -1,7 +1,7 @@ - .\" A man page for ipa-client-samba - .\" Copyright (C) 2008-2016 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-client-samba" "1" "Jun 10 2019" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-client-samba" "1" "Jun 10 2019" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-client\-samba \- Configure Samba file server on an IPA client - .SH "SYNOPSIS" -@@ -39,7 +39,7 @@ The ipa\-client\-samba script assumes that the machine has alreaby been enrolled - .SS "IPA Master Requirements" - At least one IPA master must hold a \fBTrust Controller\fR role. This can be achieved by running ipa\-adtrust\-install on the IPA master. The utility will configure IPA master to be a domain controller for IPA domain. - --IPA master holding a \fBTrust Controller\fR role has also to have support for a special service command to create SMB service, \fBipa service-add-smb\fR. This command is available with FreeIPA 4.8.0 or later release. -+IPA master holding a \fBTrust Controller\fR role has also to have support for a special service command to create SMB service, \fBipa service-add-smb\fR. This command is available with IPA 4.8.0 or later release. - - .SH "OPTIONS" - .SS "BASIC OPTIONS" --- -2.28.0 - - -From 74bd1541d58e30319c99ac42a78f78b4e65a8117 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Fri, 3 Apr 2020 14:28:22 +0200 -Subject: [PATCH 67/93] contrib/lite-server.py: Change branding to IPA and - Identity Management - ---- - contrib/lite-server.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/contrib/lite-server.py b/contrib/lite-server.py -index 51f7c08..badbfdb 100755 ---- a/contrib/lite-server.py -+++ b/contrib/lite-server.py -@@ -140,7 +140,7 @@ class StaticFilesMiddleware(SharedDataMiddleware): - - - def init_api(ccname): -- """Initialize FreeIPA API from command line -+ """Initialize IPA API from command line - """ - from ipalib import __file__ as ipalib_file - from ipalib import api --- -2.28.0 - - -From 46c3a350be1140eb7fbb529586bf11c986bbc8ae Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Fri, 3 Apr 2020 14:28:56 +0200 -Subject: [PATCH 68/93] ipaserver/dcerpc.py: Change branding to IPA and - Identity Management - ---- - ipaserver/dcerpc.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/dcerpc.py b/ipaserver/dcerpc.py -index ff56270..753d171 100644 ---- a/ipaserver/dcerpc.py -+++ b/ipaserver/dcerpc.py -@@ -1483,7 +1483,7 @@ def fetch_domains(api, mydomain, trustdomain, creds=None, server=None): - def communicate(td): - td.init_lsa_pipe(td.info['dc']) - netr_pipe = netlogon.netlogon(td.binding, td.parm, td.creds) -- # Older FreeIPA versions used netr_DsrEnumerateDomainTrusts call -+ # Older IPA versions used netr_DsrEnumerateDomainTrusts call - # but it doesn't provide information about non-domain UPNs associated - # with the forest, thus we have to use netr_DsRGetForestTrustInformation - domains = netr_pipe.netr_DsRGetForestTrustInformation(td.info['dc'], None, 0) --- -2.28.0 - - -From c9ccf5ec0927e25a32060a556e5248d3bc3cda66 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Fri, 3 Apr 2020 14:29:21 +0200 -Subject: [PATCH 69/93] ipaserver/install/ipa_cert_fix.py: Change branding to - IPA and Identity Management - ---- - ipaserver/install/ipa_cert_fix.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/install/ipa_cert_fix.py b/ipaserver/install/ipa_cert_fix.py -index 1b2f543..735fcd7 100644 ---- a/ipaserver/install/ipa_cert_fix.py -+++ b/ipaserver/install/ipa_cert_fix.py -@@ -45,7 +45,7 @@ msg = """ - WARNING - - ipa-cert-fix is intended for recovery when expired certificates --prevent the normal operation of FreeIPA. It should ONLY be used -+prevent the normal operation of IPA. It should ONLY be used - in such scenarios, and backup of the system, especially certificates - and keys, is STRONGLY RECOMMENDED. - --- -2.28.0 - - -From 8f24640b50dc24dbae3f24726d2a05993d9a42b7 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Fri, 3 Apr 2020 14:29:43 +0200 -Subject: [PATCH 70/93] ipaserver/plugins/config.py: Change branding to IPA and - Identity Management - ---- - ipaserver/plugins/config.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/plugins/config.py b/ipaserver/plugins/config.py -index e96e519..ace66e5 100644 ---- a/ipaserver/plugins/config.py -+++ b/ipaserver/plugins/config.py -@@ -462,7 +462,7 @@ class config(LDAPObject): - - known_domains = self.gather_trusted_domains() - -- # add FreeIPA domain to the list of domains. This one is always enabled -+ # add IPA domain to the list of domains. This one is always enabled - known_domains.update({self.api.env.domain: True}) - - for domain in submitted_domains: --- -2.28.0 - - -From cbc3d2ebc95d5d27a142846a016a2f947b21d369 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Fri, 3 Apr 2020 14:30:01 +0200 -Subject: [PATCH 71/93] ipaserver/plugins/certprofile.py: Change branding to - IPA and Identity Management - ---- - ipaserver/plugins/certprofile.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaserver/plugins/certprofile.py b/ipaserver/plugins/certprofile.py -index ffede6e..978fce8 100644 ---- a/ipaserver/plugins/certprofile.py -+++ b/ipaserver/plugins/certprofile.py -@@ -57,7 +57,7 @@ PROFILE CONFIGURATION FORMAT: - The profile configuration format is the raw property-list format - used by Dogtag Certificate System. The XML format is not supported. - --The following restrictions apply to profiles managed by FreeIPA: -+The following restrictions apply to profiles managed by IPA: - - - When importing a profile the "profileId" field, if present, must - match the ID given on the command line. --- -2.28.0 - - -From dbc6bef407c6a0907965281f61f1d271972bf5ac Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Fri, 3 Apr 2020 14:30:20 +0200 -Subject: [PATCH 72/93] doc/designs/adtrust/samba-domain-member.md: Change - branding to IPA and Identity Management - ---- - doc/designs/adtrust/samba-domain-member.md | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/doc/designs/adtrust/samba-domain-member.md b/doc/designs/adtrust/samba-domain-member.md -index 95e3c01..83e84dd 100644 ---- a/doc/designs/adtrust/samba-domain-member.md -+++ b/doc/designs/adtrust/samba-domain-member.md -@@ -46,11 +46,11 @@ performing a remote authentication using Kerberos, a remote system has to - present a Kerberos ticket to the domain member's SMB service, like with any - other Kerberos services. - --To operate as a domain member in a FreeIPA domain, thus, Samba needs a FreeIPA --master to be configured as a domain controller and a FreeIPA client needs to be -+To operate as a domain member in a IPA domain, thus, Samba needs a IPA -+master to be configured as a domain controller and a IPA client needs to be - configured in a specific way to allow Samba to talk to a domain controller. - This document overviews a set of implementation tasks to achieve the domain --member operation. Most of these tasks are related to FreeIPA components but -+member operation. Most of these tasks are related to IPA components but - some of changes required do belong to Samba itself. - - ## Domain member configuration overview -@@ -102,16 +102,16 @@ password rotation. - - The knowledge of the machine account password is recorded in a special - database, `secrets.tdb`, during the process of a machine join to the domain. --For FreeIPA client the join process is different from the one Samba uses for -+For IPA client the join process is different from the one Samba uses for - Active Directory, thus we need to seed the machine account password separately --to enrolling FreeIPA client. Note that FreeIPA machine enrollment does not -+to enrolling IPA client. Note that IPA machine enrollment does not - allow to share clear text machine account password as it is not recorded - anywhere. - - ## Domain controller side configuration overview - - See [samba-domain-controller] for the details of how Samba domain controller is --set up and configured in FreeIPA. -+set up and configured in IPA. - - ## Changes required on domain member - --- -2.28.0 - - -From 0f0f606a3fee4607a57110f429b38a6fb38d5dea Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:36:01 +0100 -Subject: [PATCH 73/93] po/ipa.pot: Change branding to IPA and Identity - Management - ---- - po/ipa.pot | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/po/ipa.pot b/po/ipa.pot -index e49bb7e..56dab55 100644 ---- a/po/ipa.pot -+++ b/po/ipa.pot -@@ -25055,7 +25055,7 @@ msgstr "" - #: ipaclient/remote_plugins/2_164/otptoken.py:266 - #: ipaclient/remote_plugins/2_164/otptoken.py:556 - #: ipaserver/plugins/otptoken.py:248 --msgid "TOTP token / FreeIPA server time difference" -+msgid "TOTP token / IPA server time difference" - msgstr "" - - #: ipaclient/remote_plugins/2_114/otptoken.py:140 -@@ -28858,7 +28858,7 @@ msgid "" - "commands as root or another user while providing an audit trail of the\n" - "commands and their arguments.\n" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -28873,7 +28873,7 @@ msgid "" - "are evaluated (if the client supports it). This order is an integer and\n" - "must be unique.\n" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "To enable the binddn run the following command to set the password:\n" -@@ -31529,7 +31529,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -36221,7 +36221,7 @@ msgid "" - "commands as root or another user while providing an audit trail of the\n" - "commands and their arguments.\n" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -36236,7 +36236,7 @@ msgid "" - "are evaluated (if the client supports it). This order is an integer and\n" - "must be unique.\n" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "To enable the binddn run the following command to set the password:\n" -@@ -36244,7 +36244,7 @@ msgid "" - "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," - "dc=com\n" - "\n" --"For more information, see the FreeIPA Documentation to Sudo.\n" -+"For more information, see the IPA Documentation to Sudo.\n" - msgstr "" - - #: ipaclient/remote_plugins/2_49/sudorule.py:382 -@@ -39846,7 +39846,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -49076,7 +49076,7 @@ msgstr "" - #: ipaserver/plugins/sudorule.py:49 - msgid "" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -49099,7 +49099,7 @@ msgstr "" - #: ipaserver/plugins/sudorule.py:62 - msgid "" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - msgstr "" - --- -2.28.0 - - -From 05e5469dfac9361cdfae113947faeefa7fd0be17 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 74/93] client/man/epn.conf.5: Change branding to IPA and - Identity Management - ---- - client/man/epn.conf.5 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/epn.conf.5 b/client/man/epn.conf.5 -index 60508d2..9f0ec59 100644 ---- a/client/man/epn.conf.5 -+++ b/client/man/epn.conf.5 -@@ -16,7 +16,7 @@ - .\" - .\" Author: Rob Crittenden <rcritten@@redhat.com> - .\" --.TH "EPN.CONF" "5" "April 28, 2020" "FreeIPA" "FreeIPA Manual Pages" -+.TH "EPN.CONF" "5" "April 28, 2020" "IPA" "IPA Manual Pages" - .SH "NAME" - epn.conf \- Expiring Password Notification configuration file - .SH "SYNOPSIS" --- -2.28.0 - - -From 334dc4d3b5509b10bb5bbf5f13b06604260c83af Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 75/93] client/man/ipa-epn.1: Change branding to IPA and - Identity Management - ---- - client/man/ipa-epn.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/client/man/ipa-epn.1 b/client/man/ipa-epn.1 -index 124fd45..5e8438b 100644 ---- a/client/man/ipa-epn.1 -+++ b/client/man/ipa-epn.1 -@@ -15,7 +15,7 @@ - .\" along with this program. If not, see <http://www.gnu.org/licenses/>. - .\" - .\" --.TH "IPA-EPN" "1" "April 24, 2020" "FreeIPA" "FreeIPA Manual Pages" -+.TH "IPA-EPN" "1" "April 24, 2020" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-epn \- Send expiring password nofications - .SH "SYNOPSIS" --- -2.28.0 - - -From b8f4a8717acacbaed2b89fcad4d0e7e52db33302 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 76/93] install/share/ipaca_default.ini: Change branding to IPA - and Identity Management - ---- - install/share/ipaca_default.ini | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/share/ipaca_default.ini b/install/share/ipaca_default.ini -index e71edac..3a3dfd0 100644 ---- a/install/share/ipaca_default.ini -+++ b/install/share/ipaca_default.ini -@@ -2,7 +2,7 @@ - # Dogtag PKI configuration file - # - # The ipaca_default.ini contains hard-coded defaults that cannot be modified --# by a user without breaking FreeIPA internals. -+# by a user without breaking IPA internals. - # - # Note: "%" must be quoted as "%%". - # --- -2.28.0 - - -From 8ebd6ce9596ca0871772ae6eac4e61e4e2aecd1b Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 77/93] install/tools/man/ipa-acme-manage.1: Change branding to - IPA and Identity Management - ---- - install/tools/man/ipa-acme-manage.1 | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/install/tools/man/ipa-acme-manage.1 b/install/tools/man/ipa-acme-manage.1 -index 07ee48d..e15d25b 100644 ---- a/install/tools/man/ipa-acme-manage.1 -+++ b/install/tools/man/ipa-acme-manage.1 -@@ -1,17 +1,17 @@ - .\" - .\" Copyright (C) 2020 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-acme-manage" "1" "Jun 2 2020" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-acme-manage" "1" "Jun 2 2020" "IPA" "IPA Manual Pages" - .SH "NAME" --ipa\-acme\-manage \- Manage the FreeIPA ACME service -+ipa\-acme\-manage \- Manage the IPA ACME service - .SH "SYNOPSIS" - ipa\-acme\-manage enable|disable|status - .SH "DESCRIPTION" - - Use the \fIipa-acme-manage\fR command to enable, disable or retrieve --the status of the ACME service on a FreeIPA CA server. -+the status of the ACME service on a IPA CA server. - --In a FreeIPA topology all CA servers capable of ACME will -+In a IPA topology all CA servers capable of ACME will - have the ACME service deployed. The service is not enabled - by default. It is expected that the ACME service will either be - enabled on all CA servers, or disabled on all CA servers. However -@@ -33,6 +33,6 @@ Display the status of the ACME service. - - 1 if an error occurred - --2 if the host is not a FreeIPA server -+2 if the host is not a IPA server - - 3 if the host is not a CA server --- -2.28.0 - - -From 44e59d1aa53d0f24eff221c6dcfcbb0e47833736 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 78/93] install/tools/man/ipa-cert-fix.1: Change branding to - IPA and Identity Management - ---- - install/tools/man/ipa-cert-fix.1 | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/install/tools/man/ipa-cert-fix.1 b/install/tools/man/ipa-cert-fix.1 -index 3edef31..1ce6559 100644 ---- a/install/tools/man/ipa-cert-fix.1 -+++ b/install/tools/man/ipa-cert-fix.1 -@@ -1,7 +1,7 @@ - .\" - .\" Copyright (C) 2019 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-cert-fix" "1" "Mar 25 2019" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-cert-fix" "1" "Mar 25 2019" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-cert\-fix \- Renew expired certificates - .SH "SYNOPSIS" -@@ -9,7 +9,7 @@ ipa\-cert\-fix [options] - .SH "DESCRIPTION" - - \fIipa-cert-fix\fR is a tool for recovery when expired certificates --prevent the normal operation of FreeIPA. It should ONLY be used in -+prevent the normal operation of IPA. It should ONLY be used in - such scenarios, and backup of the system, especially certificates - and keys, is \fBSTRONGLY RECOMMENDED\fR. - -@@ -22,7 +22,7 @@ This tool cannot renew certificates signed by external CAs. To - install new, externally-signed HTTP, LDAP or KDC certificates, use - \fIipa-server-certinstall(1)\fR. - --\fIipa-cert-fix\fR will examine FreeIPA and Certificate System -+\fIipa-cert-fix\fR will examine IPA and Certificate System - certificates and renew certificates that are expired, or close to - expiry (less than two weeks). If any "shared" certificates are - renewed, \fIipa-cert-fix\fR will set the current server to be the CA --- -2.28.0 - - -From 48d4752286f1bd8ca8089348d1c68275b37cbd6f Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 79/93] install/tools/man/ipa-crlgen-manage.1: Change branding - to IPA and Identity Management - ---- - install/tools/man/ipa-crlgen-manage.1 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/install/tools/man/ipa-crlgen-manage.1 b/install/tools/man/ipa-crlgen-manage.1 -index 1fa48ce..f17573b 100644 ---- a/install/tools/man/ipa-crlgen-manage.1 -+++ b/install/tools/man/ipa-crlgen-manage.1 -@@ -1,7 +1,7 @@ - .\" - .\" Copyright (C) 2019 FreeIPA Contributors see COPYING for license - .\" --.TH "ipa-crlgen-manage" "1" "Feb 12 2019" "FreeIPA" "FreeIPA Manual Pages" -+.TH "ipa-crlgen-manage" "1" "Feb 12 2019" "IPA" "IPA Manual Pages" - .SH "NAME" - ipa\-crlgen\-manage \- Enables or disables CRL generation - .SH "SYNOPSIS" --- -2.28.0 - - -From 253ba05abbe1899c7eaf9cdaf23014a7773243bd Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 80/93] ipaclient/remote_plugins/2_114/sudorule.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_114/sudorule.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ipaclient/remote_plugins/2_114/sudorule.py b/ipaclient/remote_plugins/2_114/sudorule.py -index 808720e..4b02073 100644 ---- a/ipaclient/remote_plugins/2_114/sudorule.py -+++ b/ipaclient/remote_plugins/2_114/sudorule.py -@@ -24,7 +24,7 @@ give certain users (or groups of users) the ability to run some (or all) - commands as root or another user while providing an audit trail of the - commands and their arguments. - --FreeIPA provides a means to configure the various aspects of Sudo: -+IPA provides a means to configure the various aspects of Sudo: - Users: The user(s)/group(s) allowed to invoke Sudo. - Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke Sudo. - Allow Command: The specific command(s) permitted to be run via Sudo. -@@ -37,7 +37,7 @@ An order can be added to a sudorule to control the order in which they - are evaluated (if the client supports it). This order is an integer and - must be unique. - --FreeIPA provides a designated binddn to use with Sudo located at: -+IPA provides a designated binddn to use with Sudo located at: - uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com - - To enable the binddn run the following command to set the password: --- -2.28.0 - - -From 6f09a8be31d9929ee6863808a1497c3f27d6252f Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 81/93] ipaclient/remote_plugins/2_156/certprofile.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_156/certprofile.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaclient/remote_plugins/2_156/certprofile.py b/ipaclient/remote_plugins/2_156/certprofile.py -index b612342..1727f6d 100644 ---- a/ipaclient/remote_plugins/2_156/certprofile.py -+++ b/ipaclient/remote_plugins/2_156/certprofile.py -@@ -55,7 +55,7 @@ PROFILE CONFIGURATION FORMAT: - The profile configuration format is the raw property-list format - used by Dogtag Certificate System. The XML format is not supported. - --The following restrictions apply to profiles managed by FreeIPA: -+The following restrictions apply to profiles managed by IPA: - - - When importing a profile the "profileId" field, if present, must - match the ID given on the command line. --- -2.28.0 - - -From d8213c572ff439f7833fd80d15c67706cb5a4063 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 82/93] ipaclient/remote_plugins/2_156/sudorule.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_156/sudorule.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ipaclient/remote_plugins/2_156/sudorule.py b/ipaclient/remote_plugins/2_156/sudorule.py -index 5d185ed..d475e68 100644 ---- a/ipaclient/remote_plugins/2_156/sudorule.py -+++ b/ipaclient/remote_plugins/2_156/sudorule.py -@@ -24,7 +24,7 @@ give certain users (or groups of users) the ability to run some (or all) - commands as root or another user while providing an audit trail of the - commands and their arguments. - --FreeIPA provides a means to configure the various aspects of Sudo: -+IPA provides a means to configure the various aspects of Sudo: - Users: The user(s)/group(s) allowed to invoke Sudo. - Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke Sudo. - Allow Command: The specific command(s) permitted to be run via Sudo. -@@ -37,7 +37,7 @@ An order can be added to a sudorule to control the order in which they - are evaluated (if the client supports it). This order is an integer and - must be unique. - --FreeIPA provides a designated binddn to use with Sudo located at: -+IPA provides a designated binddn to use with Sudo located at: - uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com - - To enable the binddn run the following command to set the password: --- -2.28.0 - - -From dc5781178e7902c2aa99e34d1f59add4a4289ceb Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 83/93] ipaclient/remote_plugins/2_164/certprofile.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_164/certprofile.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ipaclient/remote_plugins/2_164/certprofile.py b/ipaclient/remote_plugins/2_164/certprofile.py -index b612342..1727f6d 100644 ---- a/ipaclient/remote_plugins/2_164/certprofile.py -+++ b/ipaclient/remote_plugins/2_164/certprofile.py -@@ -55,7 +55,7 @@ PROFILE CONFIGURATION FORMAT: - The profile configuration format is the raw property-list format - used by Dogtag Certificate System. The XML format is not supported. - --The following restrictions apply to profiles managed by FreeIPA: -+The following restrictions apply to profiles managed by IPA: - - - When importing a profile the "profileId" field, if present, must - match the ID given on the command line. --- -2.28.0 - - -From c9fdd62a896eac4a9a1ab1c49dce93701a12b2b8 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 84/93] ipaclient/remote_plugins/2_164/sudorule.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_164/sudorule.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ipaclient/remote_plugins/2_164/sudorule.py b/ipaclient/remote_plugins/2_164/sudorule.py -index 5d185ed..d475e68 100644 ---- a/ipaclient/remote_plugins/2_164/sudorule.py -+++ b/ipaclient/remote_plugins/2_164/sudorule.py -@@ -24,7 +24,7 @@ give certain users (or groups of users) the ability to run some (or all) - commands as root or another user while providing an audit trail of the - commands and their arguments. - --FreeIPA provides a means to configure the various aspects of Sudo: -+IPA provides a means to configure the various aspects of Sudo: - Users: The user(s)/group(s) allowed to invoke Sudo. - Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke Sudo. - Allow Command: The specific command(s) permitted to be run via Sudo. -@@ -37,7 +37,7 @@ An order can be added to a sudorule to control the order in which they - are evaluated (if the client supports it). This order is an integer and - must be unique. - --FreeIPA provides a designated binddn to use with Sudo located at: -+IPA provides a designated binddn to use with Sudo located at: - uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com - - To enable the binddn run the following command to set the password: --- -2.28.0 - - -From a7f9d11f32a6f2ff0cbba60e078c2557704703a9 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 17:38:57 +0100 -Subject: [PATCH 85/93] ipaclient/remote_plugins/2_49/sudorule.py: Change - branding to IPA and Identity Management - ---- - ipaclient/remote_plugins/2_49/sudorule.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ipaclient/remote_plugins/2_49/sudorule.py b/ipaclient/remote_plugins/2_49/sudorule.py -index 3d01ecd..912a0b1 100644 ---- a/ipaclient/remote_plugins/2_49/sudorule.py -+++ b/ipaclient/remote_plugins/2_49/sudorule.py -@@ -24,7 +24,7 @@ give certain users (or groups of users) the ability to run some (or all) - commands as root or another user while providing an audit trail of the - commands and their arguments. - --FreeIPA provides a means to configure the various aspects of Sudo: -+IPA provides a means to configure the various aspects of Sudo: - Users: The user(s)/group(s) allowed to invoke Sudo. - Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke Sudo. - Allow Command: The specific command(s) permitted to be run via Sudo. -@@ -37,13 +37,13 @@ An order can be added to a sudorule to control the order in which they - are evaluated (if the client supports it). This order is an integer and - must be unique. - --FreeIPA provides a designated binddn to use with Sudo located at: -+IPA provides a designated binddn to use with Sudo located at: - uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com - - To enable the binddn run the following command to set the password: - LDAPTLS_CACERT=/etc/ipa/ca.crt /usr/bin/ldappasswd -S -W -h ipa.example.com -ZZ -D "cn=Directory Manager" uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com - --For more information, see the FreeIPA Documentation to Sudo. -+For more information, see the IPA Documentation to Sudo. - """) - - register = Registry() --- -2.28.0 - - -From d121657377c727b7c444045e3a980572476a31af Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:58 +0100 -Subject: [PATCH 86/93] po/de.po: Change branding to IPA and Identity - Management - ---- - po/de.po | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/po/de.po b/po/de.po -index 0685c23..275ac3f 100644 ---- a/po/de.po -+++ b/po/de.po -@@ -3642,7 +3642,7 @@ msgstr "TOTP Sychnronisierungsfenster" - msgid "TOTP authentication Window" - msgstr "TOTP Authentifizierungsfenster" - --msgid "TOTP token / FreeIPA server time difference" -+msgid "TOTP token / IPA server time difference" - msgstr "Differenz zwischen Token und Serverzeit" - - msgid "Target" --- -2.28.0 - - -From d1ee5f4c8f60e390b6dc5b82514cde56c41aab4e Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:58 +0100 -Subject: [PATCH 87/93] po/es.po: Change branding to IPA and Identity - Management - ---- - po/es.po | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/po/es.po b/po/es.po -index 89c0ee1..9d94232 100644 ---- a/po/es.po -+++ b/po/es.po -@@ -3056,7 +3056,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -3114,7 +3114,7 @@ msgstr "" - "propiedad\n" - "usado por Dogtag Certificate System. No está soportado el formato XML.\n" - "\n" --"A los perfiles manejados por FreeIPA se les aplican las siguientes " -+"A los perfiles manejados por IPA se les aplican las siguientes " - "restricciones:\n" - "\n" - "- Cuando se importa un perfil el campo \"profileId\", si está presente, debe " -@@ -4903,7 +4903,7 @@ msgid "" - "commands as root or another user while providing an audit trail of the\n" - "commands and their arguments.\n" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -4918,7 +4918,7 @@ msgid "" - "are evaluated (if the client supports it). This order is an integer and\n" - "must be unique.\n" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "To enable the binddn run the following command to set the password:\n" -@@ -4926,7 +4926,7 @@ msgid "" - "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," - "dc=com\n" - "\n" --"For more information, see the FreeIPA Documentation to Sudo.\n" -+"For more information, see the IPA Documentation to Sudo.\n" - msgstr "" - "\n" - "Reglas Sudo\n" -@@ -4939,7 +4939,7 @@ msgstr "" - "auditoria de\n" - " los comandos y sus argumentos.\n" - "\n" --"FreeIPA proporciona un medio para configurar diversos aspectos de Sudo:\n" -+"IPA proporciona un medio para configurar diversos aspectos de Sudo:\n" - " Users: Los usuario(s)/grupos(s) que tienen permitido llamar a Sudo.\n" - " Hosts: Loshost(s)/grupo(s) de host a los que el usuario permite llamar a " - "Sudo.\n" -@@ -4957,7 +4957,7 @@ msgstr "" - "será evaluada\n" - "(si el cliente lo soporta). Este orden es un entero y debe ser único.\n" - "\n" --"FreeIPA suministra un binddn designado para usar con Sudo situado en :\n" -+"IPA suministra un binddn designado para usar con Sudo situado en :\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "Para habilitar el binddn ejecute el siguiente comando para fijar la " -@@ -4966,7 +4966,7 @@ msgstr "" - "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," - "dc=com\n" - "\n" --"Para más información, vea la Documentación FreeIPA para Sudo.\n" -+"Para más información, vea la Documentación IPA para Sudo.\n" - - msgid "" - "\n" -@@ -12604,8 +12604,8 @@ msgstr "Variación del tiempo de autenticación TOTP (segundos)" - msgid "TOTP synchronization time variance (seconds)" - msgstr "Variación del tiempo de sincronización TOTP (segundos)" - --msgid "TOTP token / FreeIPA server time difference" --msgstr "Ficha TOTP / Diferencia de hora del servidor FreeIPA" -+msgid "TOTP token / IPA server time difference" -+msgstr "Ficha TOTP / Diferencia de hora del servidor IPA" - - msgid "Take a revoked certificate off hold." - msgstr "Tomar un certificado revocado de espera." --- -2.28.0 - - -From c21b51f2d19889f928202452ca6572f042ff8d72 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:58 +0100 -Subject: [PATCH 88/93] po/fr.po: Change branding to IPA and Identity - Management - ---- - po/fr.po | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/po/fr.po b/po/fr.po -index c8b99e2..ac602cc 100644 ---- a/po/fr.po -+++ b/po/fr.po -@@ -2575,17 +2575,17 @@ msgstr "" - - msgid "" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - msgstr "" - "\n" --"FreeIPA permet la désignation d'un « binddn » à utiliser avec sudo situé " -+"IPA permet la désignation d'un « binddn » à utiliser avec sudo situé " - "à :\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - - msgid "" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -2597,7 +2597,7 @@ msgid "" - " Options: The various Sudoers Options that can modify Sudo's behavior.\n" - msgstr "" - "\n" --"FreeIPA offre les moyens de configurer les divers aspects de sudo :\n" -+"IPA offre les moyens de configurer les divers aspects de sudo :\n" - " Users : utilisateur/groupe autorisés à invoquer sudo.\n" - " Hosts : hôte/groupe d'hôte dont l'utilisateur peut invoquer sudo.\n" - " Allow Command : commande donnée pouvant être exécutée via sudo.\n" -@@ -3708,7 +3708,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -3770,7 +3770,7 @@ msgstr "" - "propriété utilisé par Dogtag Certificate System. Le format XML n'est\n" - "pas pris en charge.\n" - "\n" --"Les restrictions suivantes s'appliquent aux profils gérés par FreeIPA :\n" -+"Les restrictions suivantes s'appliquent aux profils gérés par IPA :\n" - "\n" - "- Lors de l'import d'un profil, le champ « profileId » s'il est présent " - "doit\n" -@@ -15617,8 +15617,8 @@ msgstr "Durée de la fenêtre d'authentification TOTP (secondes)" - msgid "TOTP synchronization time variance (seconds)" - msgstr "Variance temporelle de synchronisation TOTP (secondes)" - --msgid "TOTP token / FreeIPA server time difference" --msgstr "Différence entre le jeton TOTP et le serveur FreeIPA" -+msgid "TOTP token / IPA server time difference" -+msgstr "Différence entre le jeton TOTP et le serveur IPA" - - msgid "TSIG record" - msgstr "Enregistrement TSIG" --- -2.28.0 - - -From b9123b82127a918effcb62b06c537f0f1e1193ff Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:58 +0100 -Subject: [PATCH 89/93] po/ipa.pot: Change branding to IPA and Identity - Management - ---- - po/ipa.pot | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/po/ipa.pot b/po/ipa.pot -index 56dab55..8848bb9 100644 ---- a/po/ipa.pot -+++ b/po/ipa.pot -@@ -1,5 +1,5 @@ - # SOME DESCRIPTIVE TITLE. --# Copyright (C) YEAR FreeIPA Contributors -+# Copyright (C) YEAR IPA Contributors - # This file is distributed under the same license as the freeipa package. - # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. - # --- -2.28.0 - - -From bddd0a70b16f2921b498aaa39f353401fd37466c Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:58 +0100 -Subject: [PATCH 90/93] po/ru.po: Change branding to IPA and Identity - Management - ---- - po/ru.po | 40 ++++++++++++++++++++-------------------- - 1 file changed, 20 insertions(+), 20 deletions(-) - -diff --git a/po/ru.po b/po/ru.po -index 47ae8a4..ffeb889 100644 ---- a/po/ru.po -+++ b/po/ru.po -@@ -5261,17 +5261,17 @@ msgstr "" - - msgid "" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - msgstr "" - "\n" --"FreeIPA предусматривает специальную привязку DN (binddn) для использования с " -+"IPA предусматривает специальную привязку DN (binddn) для использования с " - "Sudo:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - - msgid "" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -5283,7 +5283,7 @@ msgid "" - " Options: The various Sudoers Options that can modify Sudo's behavior.\n" - msgstr "" - "\n" --"FreeIPA предоставляет возможности настройки различных аспектов Sudo:\n" -+"IPA предоставляет возможности настройки различных аспектов Sudo:\n" - " Users: пользователь (пользователи) или группа (группы), которые могут " - "вызывать Sudo.\n" - " Hosts: узел (узлы) или группа (группы) узлов, пользователи которых могут " -@@ -7779,7 +7779,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -7833,7 +7833,7 @@ msgstr "" - "свойств, который используется системой сертификации Dogtag Certificate " - "System. Поддержка формата XML не предусмотрена.\n" - "\n" --"К профилям под управлением FreeIPA применяются следующие ограничения:\n" -+"К профилям под управлением IPA применяются следующие ограничения:\n" - "\n" - "- При импорте профиля значение поля \"profileId\", если это поле имеется, " - "должно совпадать с идентификатором, указанным в командной строке.\n" -@@ -7889,7 +7889,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -7945,7 +7945,7 @@ msgstr "" - "свойств, который используется системой сертификации Dogtag Certificate " - "System. Поддержка формата XML не предусмотрена.\n" - "\n" --"К профилям под управлением FreeIPA применяются следующие ограничения:\n" -+"К профилям под управлением IPA применяются следующие ограничения:\n" - "\n" - "- При импорте профиля значение поля \"profileId\", если это поле имеется, " - "должно совпадать с идентификатором, указанным в командной строке.\n" -@@ -13725,7 +13725,7 @@ msgid "" - "commands as root or another user while providing an audit trail of the\n" - "commands and their arguments.\n" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -13740,7 +13740,7 @@ msgid "" - "are evaluated (if the client supports it). This order is an integer and\n" - "must be unique.\n" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "To enable the binddn run the following command to set the password:\n" -@@ -13778,7 +13778,7 @@ msgstr "" - "пользователя \"root\" или другого пользователя, вместе с тем предоставляя " - "журнал аудита команд и их аргументов.\n" - "\n" --"FreeIPA предоставляет возможности настройки различных аспектов Sudo:\n" -+"IPA предоставляет возможности настройки различных аспектов Sudo:\n" - " Users: пользователь (пользователи) или группа (группы), которые могут " - "вызывать Sudo.\n" - " Hosts: узел (узлы) или группа (группы) узлов, пользователи которых могут " -@@ -13799,7 +13799,7 @@ msgstr "" - "Порядок определяется числовым индексом (целое число), который не должен " - "повторяться.\n" - "\n" --"FreeIPA предусматривает специальную привязку DN (binddn) для использования с " -+"IPA предусматривает специальную привязку DN (binddn) для использования с " - "Sudo:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" -@@ -13840,7 +13840,7 @@ msgid "" - "commands as root or another user while providing an audit trail of the\n" - "commands and their arguments.\n" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -13855,7 +13855,7 @@ msgid "" - "are evaluated (if the client supports it). This order is an integer and\n" - "must be unique.\n" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "To enable the binddn run the following command to set the password:\n" -@@ -13863,7 +13863,7 @@ msgid "" - "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," - "dc=com\n" - "\n" --"For more information, see the FreeIPA Documentation to Sudo.\n" -+"For more information, see the IPA Documentation to Sudo.\n" - msgstr "" - "\n" - "Правила Sudo\n" -@@ -13874,7 +13874,7 @@ msgstr "" - "пользователя \"root\" или другого пользователя, вместе с тем предоставляя " - "журнал аудита команд и их аргументов.\n" - "\n" --"FreeIPA предоставляет возможности настройки различных аспектов Sudo:\n" -+"IPA предоставляет возможности настройки различных аспектов Sudo:\n" - " Users: пользователь (пользователи) или группа (группы), которые могут " - "вызывать Sudo.\n" - " Hosts: узел (узлы) или группа (группы) узлов, пользователи которых могут " -@@ -13895,7 +13895,7 @@ msgstr "" - "Порядок определяется числовым индексом (целое число), который не должен " - "повторяться.\n" - "\n" --"FreeIPA предусматривает специальную привязку DN (binddn) для использования с " -+"IPA предусматривает специальную привязку DN (binddn) для использования с " - "Sudo:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" -@@ -13904,7 +13904,7 @@ msgstr "" - "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," - "dc=com\n" - "\n" --"Дополнительные сведения приведены в документации FreeIPA по Sudo.\n" -+"Дополнительные сведения приведены в документации IPA по Sudo.\n" - - msgid "" - "\n" -@@ -27149,8 +27149,8 @@ msgstr "Отклонение по времени TOTP-аутентификаци - msgid "TOTP synchronization time variance (seconds)" - msgstr "Отклонение по времени TOTP-синхронизации (в секундах)" - --msgid "TOTP token / FreeIPA server time difference" --msgstr "Разница времени между токеном TOTP и сервером FreeIPA" -+msgid "TOTP token / IPA server time difference" -+msgstr "Разница времени между токеном TOTP и сервером IPA" - - msgid "TSIG record" - msgstr "Запись TSIG" --- -2.28.0 - - -From 2f862e5f4c7601a8bc50c9334ca5d3a59d7f8a57 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:58 +0100 -Subject: [PATCH 91/93] po/tr.po: Change branding to IPA and Identity - Management - ---- - po/tr.po | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/po/tr.po b/po/tr.po -index 9eccfe4..cf9b98a 100644 ---- a/po/tr.po -+++ b/po/tr.po -@@ -1,5 +1,5 @@ - # SOME DESCRIPTIVE TITLE. --# Copyright (C) YEAR FreeIPA Contributors -+# Copyright (C) YEAR IPA Contributors - # This file is distributed under the same license as the freeipa package. - # Oğuz Ersen <oguzersen@protonmail.com>, 2020. - msgid "" --- -2.28.0 - - -From aa4d887e7cef21959c4b4b3db57f6bd9ced965eb Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:58 +0100 -Subject: [PATCH 92/93] po/uk.po: Change branding to IPA and Identity - Management - ---- - po/uk.po | 40 ++++++++++++++++++++-------------------- - 1 file changed, 20 insertions(+), 20 deletions(-) - -diff --git a/po/uk.po b/po/uk.po -index 0757e2f..fd1de90 100644 ---- a/po/uk.po -+++ b/po/uk.po -@@ -5411,17 +5411,17 @@ msgstr "" - - msgid "" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - msgstr "" - "\n" --"У FreeIPA передбачено визначений binddn для використання з sudo, який " -+"У IPA передбачено визначений binddn для використання з sudo, який " - "розташовано у\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - - msgid "" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -5433,7 +5433,7 @@ msgid "" - " Options: The various Sudoers Options that can modify Sudo's behavior.\n" - msgstr "" - "\n" --"У FreeIPA передбачено декілька параметрів налаштовування роботи sudo:\n" -+"У IPA передбачено декілька параметрів налаштовування роботи sudo:\n" - " Users: користувачі або групи, які можуть викликати sudo.\n" - " Hosts: вузли або групи вузлів, користувачі якого можуть викликати sudo.\n" - " Allow Command: специфічні команди, які можна виконувати за допомогою " -@@ -9393,7 +9393,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -9447,7 +9447,7 @@ msgstr "" - "властивостей, що використовується системою сертифікації Dogtag.\n" - "Підтримки формату XML не передбачено.\n" - "\n" --"Профілів, які керуються FreeIPA, стосуються такі обмеження:\n" -+"Профілів, які керуються IPA, стосуються такі обмеження:\n" - "\n" - "- Під час імпортування профілю поле «profileId», якщо таке є, має\n" - " містити значення, що збігається з ідентифікатором, вказаним у рядку " -@@ -9504,7 +9504,7 @@ msgid "" - "The profile configuration format is the raw property-list format\n" - "used by Dogtag Certificate System. The XML format is not supported.\n" - "\n" --"The following restrictions apply to profiles managed by FreeIPA:\n" -+"The following restrictions apply to profiles managed by IPA:\n" - "\n" - "- When importing a profile the \"profileId\" field, if present, must\n" - " match the ID given on the command line.\n" -@@ -9559,7 +9559,7 @@ msgstr "" - "властивостей, що використовується системою сертифікації Dogtag.\n" - "Підтримки формату XML не передбачено.\n" - "\n" --"Профілів, які керуються FreeIPA, стосуються такі обмеження:\n" -+"Профілів, які керуються IPA, стосуються такі обмеження:\n" - "\n" - "- Під час імпортування профілю поле «profileId», якщо таке є, має\n" - " містити значення, що збігається з ідентифікатором, вказаним у рядку " -@@ -15481,7 +15481,7 @@ msgid "" - "commands as root or another user while providing an audit trail of the\n" - "commands and their arguments.\n" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -15496,7 +15496,7 @@ msgid "" - "are evaluated (if the client supports it). This order is an integer and\n" - "must be unique.\n" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "To enable the binddn run the following command to set the password:\n" -@@ -15534,7 +15534,7 @@ msgstr "" - "користувача, зберігаючи водночас журнал виконання команд та\n" - "аргументів.\n" - "\n" --"У FreeIPA передбачено декілька параметрів налаштовування роботи sudo:\n" -+"У IPA передбачено декілька параметрів налаштовування роботи sudo:\n" - " Users: користувачі або групи, які можуть викликати sudo.\n" - " Hosts: вузли або групи вузлів, користувачі якого можуть викликати sudo.\n" - " Allow Command: специфічні команди, які можна виконувати за допомогою " -@@ -15552,7 +15552,7 @@ msgstr "" - "обробки записів (якщо такий порядок передбачено на клієнтському боці).\n" - "Порядок визначається числовим індексом, який не повинен повторюватися.\n" - "\n" --"У FreeIPA передбачено визначений binddn для використання з sudo, який " -+"У IPA передбачено визначений binddn для використання з sudo, який " - "розташовано у\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" -@@ -15592,7 +15592,7 @@ msgid "" - "commands as root or another user while providing an audit trail of the\n" - "commands and their arguments.\n" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -15607,7 +15607,7 @@ msgid "" - "are evaluated (if the client supports it). This order is an integer and\n" - "must be unique.\n" - "\n" --"FreeIPA provides a designated binddn to use with Sudo located at:\n" -+"IPA provides a designated binddn to use with Sudo located at:\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" - "To enable the binddn run the following command to set the password:\n" -@@ -15615,7 +15615,7 @@ msgid "" - "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," - "dc=com\n" - "\n" --"For more information, see the FreeIPA Documentation to Sudo.\n" -+"For more information, see the IPA Documentation to Sudo.\n" - msgstr "" - "\n" - "Правила sudo\n" -@@ -15626,7 +15626,7 @@ msgstr "" - "користувача, зберігаючи водночас журнал виконання команд та\n" - "аргументів.\n" - "\n" --"У FreeIPA передбачено декілька параметрів налаштовування роботи sudo:\n" -+"У IPA передбачено декілька параметрів налаштовування роботи sudo:\n" - " Users: користувачі або групи, які можуть викликати sudo.\n" - " Hosts: вузли або групи вузлів, користувачі якого можуть викликати sudo.\n" - " Allow Command: специфічні команди, які можна виконувати за допомогою " -@@ -15644,7 +15644,7 @@ msgstr "" - "обробки записів (якщо такий порядок передбачено на клієнтському боці).\n" - "Порядок визначається числовим індексом, який не повинен повторюватися.\n" - "\n" --"У FreeIPA передбачено визначений binddn для використання з sudo, який " -+"У IPA передбачено визначений binddn для використання з sudo, який " - "розташовано у\n" - "uid=sudo,cn=sysaccounts,cn=etc,dc=example,dc=com\n" - "\n" -@@ -15653,7 +15653,7 @@ msgstr "" - "ZZ -D \"cn=Directory Manager\" uid=sudo,cn=sysaccounts,cn=etc,dc=example," - "dc=com\n" - "\n" --"Докладніші відомості наведено у документації з FreeIPA щодо sudo.\n" -+"Докладніші відомості наведено у документації з IPA щодо sudo.\n" - - msgid "" - "\n" -@@ -29242,8 +29242,8 @@ msgstr "Відхилення часу розпізнавання TOTP (у сек - msgid "TOTP synchronization time variance (seconds)" - msgstr "Відхилення часу синхронізації TOTP (у секундах)" - --msgid "TOTP token / FreeIPA server time difference" --msgstr "Часова розбіжність між ключем TOTP і сервером FreeIPA" -+msgid "TOTP token / IPA server time difference" -+msgstr "Часова розбіжність між ключем TOTP і сервером IPA" - - msgid "TSIG record" - msgstr "Запис TSIG" --- -2.28.0 - - -From 9de5307e8111992181a775d3bd9bf279033c1b1e Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Wed, 18 Nov 2020 18:07:59 +0100 -Subject: [PATCH 93/93] po/zh_CN.po: Change branding to IPA and Identity - Management - ---- - po/zh_CN.po | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/po/zh_CN.po b/po/zh_CN.po -index 1963a5f..480c958 100644 ---- a/po/zh_CN.po -+++ b/po/zh_CN.po -@@ -298,7 +298,7 @@ msgstr "" - - msgid "" - "\n" --"FreeIPA provides a means to configure the various aspects of Sudo:\n" -+"IPA provides a means to configure the various aspects of Sudo:\n" - " Users: The user(s)/group(s) allowed to invoke Sudo.\n" - " Hosts: The host(s)/hostgroup(s) which the user is allowed to to invoke " - "Sudo.\n" -@@ -310,7 +310,7 @@ msgid "" - " Options: The various Sudoers Options that can modify Sudo's behavior.\n" - msgstr "" - "\n" --"FreeIPA提供了一种方法来配置Sudo的各个方面:\n" -+"IPA提供了一种方法来配置Sudo的各个方面:\n" - " 用户:用户/用户组允许调用Sudo。\n" - " 主机:主机/主机组上的用户允许调用Sudo。\n" - " 允许的命令:指定命令允许通过Sudo来运行。\n" -@@ -9885,8 +9885,8 @@ msgstr "TOTP认证时间差异(秒)" - msgid "TOTP synchronization time variance (seconds)" - msgstr "TOTP同步时间差异(秒)" - --msgid "TOTP token / FreeIPA server time difference" --msgstr "TOTP令牌/FreeIPA服务器时差" -+msgid "TOTP token / IPA server time difference" -+msgstr "TOTP令牌/IPA服务器时差" - - msgid "TSIG record" - msgstr "TSIG记录" -- -2.28.0 +2.26.2 diff --git a/SOURCES/1002-4.8.0-Remove-csrgen.patch b/SOURCES/1002-4.8.0-Remove-csrgen.patch deleted file mode 100644 index e6ba316..0000000 --- a/SOURCES/1002-4.8.0-Remove-csrgen.patch +++ /dev/null @@ -1,2051 +0,0 @@ -Addtional patches that need to be partly reverted that are touching csrgen -related files: - -7b8a2af2197381058ca532d1ae206defb16fac88 -ac6568dcf58ec8d06df5493d14a28aa41845d4ef -9c86d35a3f0af4a793fada7dfe726e9cc66782ea -9836511a2b6d7cf48b1a54cb3158e5eac674081a -b431e9b684df11c811892bd9d2a5711355f0076e - -This is a collection of an existing patch to remove csrgen for 4.7.1 and -additional patches that have been added for 4.7.90 pre1. - -Additional reverted csrgen patches: - -852618fd6529fbdd7b03077fae37c6fbbe45b51b -0ac1d3ea62efd9751fcc59cea46bcdafe1f11c37 -7633d62d858c14523a99143aa0ff36f76bb4ff68 -53f87ee5cd9d19f6fb91a9a1eafc8ea798095954 -395a68d20887d0ac010e480e68b225d6dfeff726 -03786ad9f3bd5edc351040847b8a49c9cd9288b2 -c9d710a446d10aad72795e15bf041b87102628c1 -2b90c8a20e45ade9bfd27731cccc94a34cf3f61e -61dde27f70b9f8dd1b57ad1fbc3744f3c380613a -806784dbd9e69a89c7a705c89bf42ba1fd4265c9 -79378c90512a1cdd5f3d5ec6482e434caea06e01 -bd5a5012d24820b54cdca2955f5405b84de1178c -26ab51ddf47f421f3404709052db89f08c05adaa -a53e17830c3d4fd59a62248d4447491675c6a80e -e7588ab2dc73e7f66ebc6cdcfb99470540e37731 -136c6c3e2a4f77a27f435efd4a1cd95c9e089314 -5420e9cfbe7803808b6e26d2dae64f2a6a50149a - -Original patch from 4.7.1: - -From 468bcf90cb985e2b1eb394bd752dc39aa4b75582 Mon Sep 17 00:00:00 2001 -From: Rob Crittenden <rcritten@redhat.com> -Date: Thu, 19 Jul 2018 18:37:18 -0400 -Subject: [PATCH] Remove csrgen - -This reverts commits: -* 72de679eb445c975ec70cd265d37d4927823ce5b -* 177f07e163d6d591a1e609d35e0a6f6f5347551e -* 80be18162921268be9c8981495c9e8a4de0c85cd -* 83e2c2b65eeb5a3aa4a59c0535e9177aac5e4637 -* ada91c20588046bb147fc701718d3da4d2c080ca -* 4350dcdea22fd2284836315d0ae7d38733a7620e -* 39a5d9c5aae77687f67d9be02457733bdfb99ead -* a26cf0d7910dd4c0a4da08682b4be8d3d94ba520 -* afd7c05d11432304bfdf183832a21d419f363689 -* f1a1c6eca1b294f24174d7b0e1f78de46d9d5b05 -* fc58eff6a3d7fe805e612b8b002304d8b9cd4ba9 -* 10ef5947860f5098182b1f95c08c1158e2da15f9 - -https://bugzilla.redhat.com/show_bug.cgi?id=1432630 ---- - freeipa.spec.in | 14 - - ipaclient/csrgen.py | 488 --------------------- - ipaclient/csrgen/profiles/caIPAserviceCert.json | 15 - - ipaclient/csrgen/profiles/userCert.json | 15 - - ipaclient/csrgen/rules/dataDNS.json | 8 - - ipaclient/csrgen/rules/dataEmail.json | 8 - - ipaclient/csrgen/rules/dataHostCN.json | 8 - - ipaclient/csrgen/rules/dataSubjectBase.json | 8 - - ipaclient/csrgen/rules/dataUsernameCN.json | 8 - - ipaclient/csrgen/rules/syntaxSAN.json | 8 - - ipaclient/csrgen/rules/syntaxSubject.json | 9 - - ipaclient/csrgen/templates/openssl_base.tmpl | 17 - - ipaclient/csrgen/templates/openssl_macros.tmpl | 29 -- - ipaclient/csrgen_ffi.py | 331 -------------- - ipaclient/plugins/cert.py | 80 ---- - ipaclient/plugins/csrgen.py | 128 ------ - ipaclient/setup.py | 8 - - .../data/test_csrgen/configs/caIPAserviceCert.conf | 16 - - .../data/test_csrgen/configs/userCert.conf | 16 - - .../data/test_csrgen/profiles/profile.json | 8 - - .../data/test_csrgen/rules/basic.json | 5 - - .../data/test_csrgen/rules/options.json | 8 - - .../data/test_csrgen/templates/identity_base.tmpl | 1 - - ipatests/test_ipaclient/test_csrgen.py | 304 ------------- - 24 files changed, 1540 deletions(-) - delete mode 100644 ipaclient/csrgen.py - delete mode 100644 ipaclient/csrgen/profiles/caIPAserviceCert.json - delete mode 100644 ipaclient/csrgen/profiles/userCert.json - delete mode 100644 ipaclient/csrgen/rules/dataDNS.json - delete mode 100644 ipaclient/csrgen/rules/dataEmail.json - delete mode 100644 ipaclient/csrgen/rules/dataHostCN.json - delete mode 100644 ipaclient/csrgen/rules/dataSubjectBase.json - delete mode 100644 ipaclient/csrgen/rules/dataUsernameCN.json - delete mode 100644 ipaclient/csrgen/rules/syntaxSAN.json - delete mode 100644 ipaclient/csrgen/rules/syntaxSubject.json - delete mode 100644 ipaclient/csrgen/templates/openssl_base.tmpl - delete mode 100644 ipaclient/csrgen/templates/openssl_macros.tmpl - delete mode 100644 ipaclient/csrgen_ffi.py - delete mode 100644 ipaclient/plugins/csrgen.py - delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf - delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf - delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json - delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/rules/basic.json - delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/rules/options.json - delete mode 100644 ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl - delete mode 100644 ipatests/test_ipaclient/test_csrgen.py - -#diff -urN freeipa-4.8.0/freeipa.spec.in freeipa-4.8.0.removed_csrgen/freeipa.spec.in -#--- freeipa-4.8.0/freeipa.spec.in 2019-06-29 10:01:30.458735813 +0200 -#+++ freeipa-4.8.0.removed_csrgen/freeipa.spec.in 2019-07-03 13:24:38.471222723 +0200 -#@@ -1247,13 +1247,6 @@ -# %dir %{python3_sitelib}/ipaclient/remote_plugins/2_* -# %{python3_sitelib}/ipaclient/remote_plugins/2_*/*.py -# %{python3_sitelib}/ipaclient/remote_plugins/2_*/__pycache__/*.py* -#-%dir %{python3_sitelib}/ipaclient/csrgen -#-%dir %{python3_sitelib}/ipaclient/csrgen/profiles -#-%{python3_sitelib}/ipaclient/csrgen/profiles/*.json -#-%dir %{python3_sitelib}/ipaclient/csrgen/rules -#-%{python3_sitelib}/ipaclient/csrgen/rules/*.json -#-%dir %{python3_sitelib}/ipaclient/csrgen/templates -#-%{python3_sitelib}/ipaclient/csrgen/templates/*.tmpl -# %{python3_sitelib}/ipaclient-*.egg-info -# -# -diff -urN freeipa-4.8.0/ipaclient/csrgen/profiles/caIPAserviceCert.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/profiles/caIPAserviceCert.json ---- freeipa-4.8.0/ipaclient/csrgen/profiles/caIPAserviceCert.json 2019-07-03 08:42:41.844539797 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/profiles/caIPAserviceCert.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,15 +0,0 @@ --[ -- { -- "syntax": "syntaxSubject", -- "data": [ -- "dataHostCN", -- "dataSubjectBase" -- ] -- }, -- { -- "syntax": "syntaxSAN", -- "data": [ -- "dataDNS" -- ] -- } --] -diff -urN freeipa-4.8.0/ipaclient/csrgen/profiles/userCert.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/profiles/userCert.json ---- freeipa-4.8.0/ipaclient/csrgen/profiles/userCert.json 2019-07-03 08:42:41.848539737 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/profiles/userCert.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,15 +0,0 @@ --[ -- { -- "syntax": "syntaxSubject", -- "data": [ -- "dataUsernameCN", -- "dataSubjectBase" -- ] -- }, -- { -- "syntax": "syntaxSAN", -- "data": [ -- "dataEmail" -- ] -- } --] -diff -urN freeipa-4.8.0/ipaclient/csrgen/rules/dataDNS.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataDNS.json ---- freeipa-4.8.0/ipaclient/csrgen/rules/dataDNS.json 2019-07-03 08:42:41.853539663 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataDNS.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --{ -- "rule": { -- "template": "DNS = {{subject.krbprincipalname.0.partition('/')[2].partition('@')[0]}}" -- }, -- "options": { -- "data_source": "subject.krbprincipalname.0.partition('/')[2].partition('@')[0]" -- } --} -diff -urN freeipa-4.8.0/ipaclient/csrgen/rules/dataEmail.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataEmail.json ---- freeipa-4.8.0/ipaclient/csrgen/rules/dataEmail.json 2019-07-03 08:42:41.857539603 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataEmail.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --{ -- "rule": { -- "template": "email = {{subject.mail.0}}" -- }, -- "options": { -- "data_source": "subject.mail.0" -- } --} -diff -urN freeipa-4.8.0/ipaclient/csrgen/rules/dataHostCN.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataHostCN.json ---- freeipa-4.8.0/ipaclient/csrgen/rules/dataHostCN.json 2019-07-03 08:42:41.861539544 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataHostCN.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --{ -- "rule": { -- "template": "CN={{subject.krbprincipalname.0.partition('/')[2].partition('@')[0]}}" -- }, -- "options": { -- "data_source": "subject.krbprincipalname.0.partition('/')[2].partition('@')[0]" -- } --} -diff -urN freeipa-4.8.0/ipaclient/csrgen/rules/dataSubjectBase.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataSubjectBase.json ---- freeipa-4.8.0/ipaclient/csrgen/rules/dataSubjectBase.json 2019-07-03 08:42:41.865539484 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataSubjectBase.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --{ -- "rule": { -- "template": "{{config.ipacertificatesubjectbase.0}}" -- }, -- "options": { -- "data_source": "config.ipacertificatesubjectbase.0" -- } --} -diff -urN freeipa-4.8.0/ipaclient/csrgen/rules/dataUsernameCN.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataUsernameCN.json ---- freeipa-4.8.0/ipaclient/csrgen/rules/dataUsernameCN.json 2019-07-03 08:42:41.869539424 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/dataUsernameCN.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --{ -- "rule": { -- "template": "CN={{subject.uid.0}}" -- }, -- "options": { -- "data_source": "subject.uid.0" -- } --} -diff -urN freeipa-4.8.0/ipaclient/csrgen/rules/syntaxSAN.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/syntaxSAN.json ---- freeipa-4.8.0/ipaclient/csrgen/rules/syntaxSAN.json 2019-07-03 08:42:41.874539350 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/syntaxSAN.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --{ -- "rule": { -- "template": "subjectAltName = @{% call openssl.section() %}{{ datarules|join('\n') }}{% endcall %}" -- }, -- "options": { -- "extension": true -- } --} -diff -urN freeipa-4.8.0/ipaclient/csrgen/rules/syntaxSubject.json freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/syntaxSubject.json ---- freeipa-4.8.0/ipaclient/csrgen/rules/syntaxSubject.json 2019-07-03 08:42:41.878539290 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/rules/syntaxSubject.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,9 +0,0 @@ --{ -- "rule": { -- "template": "distinguished_name = {% call openssl.section() %}{{ datarules|reverse|join('\n') }}{% endcall %}" -- }, -- "options": { -- "required": true, -- "data_source_combinator": "and" -- } --} -diff -urN freeipa-4.8.0/ipaclient/csrgen/templates/openssl_base.tmpl freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/templates/openssl_base.tmpl ---- freeipa-4.8.0/ipaclient/csrgen/templates/openssl_base.tmpl 2019-07-03 08:42:41.882539231 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/templates/openssl_base.tmpl 1970-01-01 01:00:00.000000000 +0100 -@@ -1,17 +0,0 @@ --{% raw -%} --{% import "openssl_macros.tmpl" as openssl -%} --{% endraw -%} --[ req ] --prompt = no --encrypt_key = no -- --{{ parameters|join('\n') }} --{% raw %}{% set rendered_extensions -%}{% endraw %} --{{ extensions|join('\n') }} --{% raw -%} --{%- endset -%} --{% if rendered_extensions -%} --req_extensions = {% call openssl.section() %}{{ rendered_extensions }}{% endcall %} --{% endif %} --{{ openssl.openssl_sections|join('\n\n') }} --{%- endraw %} -diff -urN freeipa-4.8.0/ipaclient/csrgen/templates/openssl_macros.tmpl freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/templates/openssl_macros.tmpl ---- freeipa-4.8.0/ipaclient/csrgen/templates/openssl_macros.tmpl 2019-07-03 08:42:41.886539171 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen/templates/openssl_macros.tmpl 1970-01-01 01:00:00.000000000 +0100 -@@ -1,29 +0,0 @@ --{# List containing rendered sections to be included at end #} --{% set openssl_sections = [] %} -- --{# --List containing one entry for each section name allocated. Because of --scoping rules, we need to use a list so that it can be a "per-render global" --that gets updated in place. Real globals are shared by all templates with the --same environment, and variables defined in the macro don't persist after the --macro invocation ends. --#} --{% set openssl_section_num = [] %} -- --{% macro section() -%} --{% set name -%} --sec{{ openssl_section_num|length -}} --{% endset -%} --{% do openssl_section_num.append('') -%} --{% set contents %}{{ caller() }}{% endset -%} --{% if contents -%} --{% set sectiondata = formatsection(name, contents) -%} --{% do openssl_sections.append(sectiondata) -%} --{% endif -%} --{{ name -}} --{% endmacro %} -- --{% macro formatsection(name, contents) -%} --[ {{ name }} ] --{{ contents -}} --{% endmacro %} -diff -urN freeipa-4.8.0/ipaclient/csrgen_ffi.py freeipa-4.8.0.removed_csrgen/ipaclient/csrgen_ffi.py ---- freeipa-4.8.0/ipaclient/csrgen_ffi.py 2019-07-03 08:42:41.816540214 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen_ffi.py 1970-01-01 01:00:00.000000000 +0100 -@@ -1,387 +0,0 @@ --from cffi import FFI --import ctypes.util -- --from ipalib import errors -- --_ffi = FFI() -- --_ffi.cdef(''' --/* libcrypto/crypto.h */ --unsigned long OpenSSL_version_num(void); --unsigned long SSLeay(void); --const char * OpenSSL_version(int t); --const char * SSLeay_version(int t); -- --#define OPENSSL_VERSION 0 --''') -- --_libcrypto = _ffi.dlopen(ctypes.util.find_library('crypto')) -- --# SSLeay_version has been renamed with OpenSSL_version in OpenSSL 1.1.0 --# LibreSSL has OpenSSL_version since 2.7.0 --try: -- OpenSSL_version = _libcrypto.OpenSSL_version --except AttributeError: -- OpenSSL_version = _libcrypto.SSLeay_version -- --_version = OpenSSL_version(_libcrypto.OPENSSL_VERSION) --_version = _ffi.string(_version).decode('utf-8') --LIBRESSL = _version.startswith('LibreSSL') --if not _version.startswith("OpenSSL") and not LIBRESSL: -- raise ImportError("Only LibreSSL and OpenSSL are supported") -- --# SSLeay has been renamed with OpenSSL_version_num in OpenSSL 1.1.0 --# LibreSSL has OpenSSL_version_num since 2.7.0 --try: -- OpenSSL_version_num = _libcrypto.OpenSSL_version_num --except AttributeError: -- OpenSSL_version_num = _libcrypto.SSLeay -- --# OpenSSL_version_num()/SSLeay() returns the value of OPENSSL_VERSION_NUMBER --# --# OPENSSL_VERSION_NUMBER is a numeric release version identifier: --# MNNFFPPS: major minor fix patch status --# For example, --# 0x000906000 == 0.9.6 dev --# 0x000906023 == 0.9.6b beta 3 --# 0x00090605f == 0.9.6e release --_openssl_version = OpenSSL_version_num() -- --_ffi.cdef(''' --typedef ... CONF; --typedef ... CONF_METHOD; --typedef ... BIO; --typedef ... ipa_STACK_OF_CONF_VALUE; -- --/* openssl/conf.h */ --typedef struct { -- char *section; -- char *name; -- char *value; --} CONF_VALUE; -- --CONF *NCONF_new(CONF_METHOD *meth); --void NCONF_free(CONF *conf); --int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); --ipa_STACK_OF_CONF_VALUE *NCONF_get_section(const CONF *conf, -- const char *section); --char *NCONF_get_string(const CONF *conf, const char *group, const char *name); -- --/* openssl/safestack.h */ --// int sk_CONF_VALUE_num(ipa_STACK_OF_CONF_VALUE *); --// CONF_VALUE *sk_CONF_VALUE_value(ipa_STACK_OF_CONF_VALUE *, int); -- --/* openssl/stack.h */ --typedef ... _STACK; -- --int OPENSSL_sk_num(const _STACK *); --void *OPENSSL_sk_value(const _STACK *, int); -- --int sk_num(const _STACK *); --void *sk_value(const _STACK *, int); -- --/* openssl/bio.h */ --BIO *BIO_new_mem_buf(const void *buf, int len); --int BIO_free(BIO *a); -- --/* openssl/asn1.h */ --typedef struct ASN1_ENCODING_st { -- unsigned char *enc; /* DER encoding */ -- long len; /* Length of encoding */ -- int modified; /* set to 1 if 'enc' is invalid */ --} ASN1_ENCODING; -- --/* openssl/evp.h */ --typedef ... EVP_PKEY; -- --void EVP_PKEY_free(EVP_PKEY *pkey); -- --/* openssl/x509.h */ --typedef ... ASN1_INTEGER; --typedef ... ASN1_BIT_STRING; --typedef ... ASN1_OBJECT; --typedef ... X509; --typedef ... X509_CRL; --typedef ... X509_NAME; --typedef ... X509_PUBKEY; --typedef ... ipa_STACK_OF_X509_ATTRIBUTE; -- --typedef struct X509_req_info_st { -- ASN1_ENCODING enc; -- ASN1_INTEGER *version; -- X509_NAME *subject; -- X509_PUBKEY *pubkey; -- /* d=2 hl=2 l= 0 cons: cont: 00 */ -- ipa_STACK_OF_X509_ATTRIBUTE *attributes; /* [ 0 ] */ --} X509_REQ_INFO; --''') -- --# since OpenSSL 1.1.0 req_info field is no longer pointer to X509_REQ_INFO --if _openssl_version >= 0x10100000 and not LIBRESSL: -- _ffi.cdef(''' -- typedef struct X509_req_st { -- X509_REQ_INFO req_info; -- } X509_REQ; -- ''') --else: -- _ffi.cdef(''' -- typedef struct X509_req_st { -- X509_REQ_INFO *req_info; -- } X509_REQ; -- ''') -- --_ffi.cdef(''' --X509_REQ *X509_REQ_new(void); --void X509_REQ_free(X509_REQ *); --EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); --int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); --int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, -- const unsigned char *bytes, int len, int loc, -- int set); --int X509_NAME_entry_count(X509_NAME *name); --int i2d_X509_REQ_INFO(X509_REQ_INFO *a, unsigned char **out); -- --/* openssl/objects.h */ --ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); -- --/* openssl/x509v3.h */ --typedef ... X509V3_CONF_METHOD; -- --typedef struct v3_ext_ctx { -- int flags; -- X509 *issuer_cert; -- X509 *subject_cert; -- X509_REQ *subject_req; -- X509_CRL *crl; -- X509V3_CONF_METHOD *db_meth; -- void *db; --} X509V3_CTX; -- --void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject, -- X509_REQ *req, X509_CRL *crl, int flags); --void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); --int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, -- X509_REQ *req); -- --/* openssl/x509v3.h */ --unsigned long ERR_get_error(void); --char *ERR_error_string(unsigned long e, char *buf); --''') # noqa: E501 -- --NULL = _ffi.NULL --# openssl/conf.h --NCONF_new = _libcrypto.NCONF_new --NCONF_free = _libcrypto.NCONF_free --NCONF_load_bio = _libcrypto.NCONF_load_bio --NCONF_get_section = _libcrypto.NCONF_get_section --NCONF_get_string = _libcrypto.NCONF_get_string -- --# openssl/stack.h --try: -- sk_num = _libcrypto.OPENSSL_sk_num -- sk_value = _libcrypto.OPENSSL_sk_value --except AttributeError: -- sk_num = _libcrypto.sk_num -- sk_value = _libcrypto.sk_value -- -- --def sk_CONF_VALUE_num(sk): -- return sk_num(_ffi.cast("_STACK *", sk)) -- -- --def sk_CONF_VALUE_value(sk, i): -- return _ffi.cast("CONF_VALUE *", sk_value(_ffi.cast("_STACK *", sk), i)) -- -- --# openssl/bio.h --BIO_new_mem_buf = _libcrypto.BIO_new_mem_buf --BIO_free = _libcrypto.BIO_free -- --# openssl/x509.h --X509_REQ_new = _libcrypto.X509_REQ_new --X509_REQ_free = _libcrypto.X509_REQ_free --X509_REQ_set_pubkey = _libcrypto.X509_REQ_set_pubkey --d2i_PUBKEY_bio = _libcrypto.d2i_PUBKEY_bio --i2d_X509_REQ_INFO = _libcrypto.i2d_X509_REQ_INFO --X509_NAME_add_entry_by_OBJ = _libcrypto.X509_NAME_add_entry_by_OBJ --X509_NAME_entry_count = _libcrypto.X509_NAME_entry_count -- -- --def X509_REQ_get_subject_name(req): -- return req.req_info.subject -- -- --# openssl/objects.h --OBJ_txt2obj = _libcrypto.OBJ_txt2obj -- --# openssl/evp.h --EVP_PKEY_free = _libcrypto.EVP_PKEY_free -- --# openssl/asn1.h --MBSTRING_UTF8 = 0x1000 -- --# openssl/x509v3.h --X509V3_set_ctx = _libcrypto.X509V3_set_ctx --X509V3_set_nconf = _libcrypto.X509V3_set_nconf --X509V3_EXT_REQ_add_nconf = _libcrypto.X509V3_EXT_REQ_add_nconf -- --# openssl/err.h --ERR_get_error = _libcrypto.ERR_get_error --ERR_error_string = _libcrypto.ERR_error_string -- -- --def _raise_openssl_errors(): -- msgs = [] -- -- code = ERR_get_error() -- while code != 0: -- msg = _ffi.string(ERR_error_string(code, NULL)) -- try: -- strmsg = msg.decode('utf-8') -- except UnicodeDecodeError: -- strmsg = repr(msg) -- msgs.append(strmsg) -- code = ERR_get_error() -- -- raise errors.CSRTemplateError(reason='\n'.join(msgs)) -- -- --def _parse_dn_section(subj, dn_sk): -- for i in range(sk_CONF_VALUE_num(dn_sk)): -- v = sk_CONF_VALUE_value(dn_sk, i) -- rdn_type = _ffi.string(v.name) -- -- # Skip past any leading X. X: X, etc to allow for multiple instances -- for idx, c in enumerate(rdn_type): -- if c in b':,.': -- if idx+1 < len(rdn_type): -- rdn_type = rdn_type[idx+1:] -- break -- if rdn_type.startswith(b'+'): -- rdn_type = rdn_type[1:] -- mval = -1 -- else: -- mval = 0 -- -- # convert rdn_type to an OID -- # -- # OpenSSL is fussy about the case of the string. For example, -- # lower-case 'o' (for "organization name") is not recognised. -- # Therefore, try to convert the given string into an OID. If -- # that fails, convert it upper case and try again. -- # -- oid = OBJ_txt2obj(rdn_type, 0) -- if oid == NULL: -- oid = OBJ_txt2obj(rdn_type.upper(), 0) -- if oid == NULL: -- raise errors.CSRTemplateError( -- reason='unrecognised attribute type: {}' -- .format(rdn_type.decode('utf-8'))) -- -- if not X509_NAME_add_entry_by_OBJ( -- subj, oid, MBSTRING_UTF8, -- _ffi.cast("unsigned char *", v.value), -1, -1, mval): -- _raise_openssl_errors() -- -- if not X509_NAME_entry_count(subj): -- raise errors.CSRTemplateError( -- reason='error, subject in config file is empty') -- -- --def build_requestinfo(config, public_key_info): -- ''' -- Return a cffi buffer containing a DER-encoded CertificationRequestInfo. -- -- The returned object implements the buffer protocol. -- -- ''' -- reqdata = NULL -- req = NULL -- nconf_bio = NULL -- pubkey_bio = NULL -- pubkey = NULL -- -- try: -- reqdata = NCONF_new(NULL) -- if reqdata == NULL: -- _raise_openssl_errors() -- -- nconf_bio = BIO_new_mem_buf(config, len(config)) -- errorline = _ffi.new('long[1]', [-1]) -- i = NCONF_load_bio(reqdata, nconf_bio, errorline) -- if i < 0: -- if errorline[0] < 0: -- raise errors.CSRTemplateError(reason="Can't load config file") -- else: -- raise errors.CSRTemplateError( -- reason='Error on line %d of config file' % errorline[0]) -- -- dn_sect = NCONF_get_string(reqdata, b'req', b'distinguished_name') -- if dn_sect == NULL: -- raise errors.CSRTemplateError( -- reason='Unable to find "distinguished_name" key in config') -- -- dn_sk = NCONF_get_section(reqdata, dn_sect) -- if dn_sk == NULL: -- raise errors.CSRTemplateError( -- reason='Unable to find "%s" section in config' % -- _ffi.string(dn_sect)) -- -- pubkey_bio = BIO_new_mem_buf(public_key_info, len(public_key_info)) -- pubkey = d2i_PUBKEY_bio(pubkey_bio, NULL) -- if pubkey == NULL: -- _raise_openssl_errors() -- -- req = X509_REQ_new() -- if req == NULL: -- _raise_openssl_errors() -- -- subject = X509_REQ_get_subject_name(req) -- -- _parse_dn_section(subject, dn_sk) -- -- if not X509_REQ_set_pubkey(req, pubkey): -- _raise_openssl_errors() -- -- ext_ctx = _ffi.new("X509V3_CTX[1]") -- X509V3_set_ctx(ext_ctx, NULL, NULL, req, NULL, 0) -- X509V3_set_nconf(ext_ctx, reqdata) -- -- extn_section = NCONF_get_string(reqdata, b"req", b"req_extensions") -- if extn_section != NULL: -- if not X509V3_EXT_REQ_add_nconf( -- reqdata, ext_ctx, extn_section, req): -- _raise_openssl_errors() -- -- if _openssl_version < 0x10100000 or LIBRESSL: -- der_len = i2d_X509_REQ_INFO(req.req_info, NULL) -- else: -- req_info = _ffi.new("X509_REQ_INFO *", req.req_info) -- der_len = i2d_X509_REQ_INFO(req_info, NULL) -- req.req_info = req_info[0] -- if der_len < 0: -- _raise_openssl_errors() -- -- der_buf = _ffi.new("unsigned char[%d]" % der_len) -- der_out = _ffi.new("unsigned char **", der_buf) -- if _openssl_version < 0x10100000 or LIBRESSL: -- der_len = i2d_X509_REQ_INFO(req.req_info, der_out) -- else: -- der_len = i2d_X509_REQ_INFO(req_info, der_out) -- req.req_info = req_info[0] -- if der_len < 0: -- _raise_openssl_errors() -- -- return _ffi.buffer(der_buf, der_len) -- -- finally: -- if reqdata != NULL: -- NCONF_free(reqdata) -- if req != NULL: -- X509_REQ_free(req) -- if nconf_bio != NULL: -- BIO_free(nconf_bio) -- if pubkey_bio != NULL: -- BIO_free(pubkey_bio) -- if pubkey != NULL: -- EVP_PKEY_free(pubkey) -diff -urN freeipa-4.8.0/ipaclient/csrgen.py freeipa-4.8.0.removed_csrgen/ipaclient/csrgen.py ---- freeipa-4.8.0/ipaclient/csrgen.py 2019-07-03 08:42:41.811540288 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/csrgen.py 1970-01-01 01:00:00.000000000 +0100 -@@ -1,488 +0,0 @@ --# --# Copyright (C) 2016 FreeIPA Contributors see COPYING for license --# -- --import base64 --import collections --import errno --import json --import logging --import os --import os.path --import pipes --import subprocess --import traceback --import codecs -- --import pkg_resources -- --from cryptography.hazmat.backends import default_backend --from cryptography.hazmat.primitives.asymmetric import padding --from cryptography.hazmat.primitives import hashes --from cryptography.hazmat.primitives.serialization import ( -- load_pem_private_key, Encoding, PublicFormat) --from cryptography.x509 import load_pem_x509_certificate --import jinja2 --import jinja2.ext --import jinja2.sandbox --from pyasn1.codec.der import decoder, encoder --from pyasn1.type import univ --from pyasn1_modules import rfc2314 --import six -- --from ipalib import api --from ipalib import errors --from ipalib.text import _ -- --if six.PY3: -- unicode = str -- --__doc__ = _(""" --Routines for constructing certificate signing requests using IPA data and --stored templates. --""") -- --logger = logging.getLogger(__name__) -- -- --class IndexableUndefined(jinja2.Undefined): -- def __getitem__(self, key): -- return jinja2.Undefined( -- hint=self._undefined_hint, obj=self._undefined_obj, -- name=self._undefined_name, exc=self._undefined_exception) -- -- --class IPAExtension(jinja2.ext.Extension): -- """Jinja2 extension providing useful features for CSR generation rules.""" -- -- def __init__(self, environment): -- super(IPAExtension, self).__init__(environment) -- -- environment.filters.update( -- quote=self.quote, -- required=self.required, -- ) -- -- def quote(self, data): -- return pipes.quote(data) -- -- def required(self, data, name): -- if not data: -- raise errors.CSRTemplateError( -- reason=_( -- 'Required CSR generation rule %(name)s is missing data') % -- {'name': name}) -- return data -- -- --class Formatter: -- """ -- Class for processing a set of CSR generation rules into a template. -- -- The template can be rendered with user and database data to produce a -- config, which specifies how to build a CSR. -- -- Subclasses of Formatter should set the value of base_template_name to the -- filename of a base template with spaces for the processed rules. -- Additionally, they should override the _get_template_params method to -- produce the correct output for the base template. -- """ -- base_template_name = None -- -- def __init__(self, csr_data_dir=None): -- # chain loaders: -- # 1) csr_data_dir/templates -- # 2) /etc/ipa/csrgen/templates -- # 3) ipaclient/csrgen/templates -- loaders = [] -- if csr_data_dir is not None: -- loaders.append(jinja2.FileSystemLoader( -- os.path.join(csr_data_dir, 'templates')) -- ) -- loaders.append(jinja2.FileSystemLoader( -- os.path.join(api.env.confdir, 'csrgen/templates')) -- ) -- loaders.append(jinja2.PackageLoader('ipaclient', 'csrgen/templates')) -- -- self.jinja2 = jinja2.sandbox.SandboxedEnvironment( -- loader=jinja2.ChoiceLoader(loaders), -- extensions=[jinja2.ext.ExprStmtExtension, IPAExtension], -- keep_trailing_newline=True, undefined=IndexableUndefined) -- -- self.passthrough_globals = {} -- -- def _define_passthrough(self, call): -- """Some macros are meant to be interpreted during the final render, not -- when data rules are interpolated into syntax rules. This method allows -- those macros to be registered so that calls to them are passed through -- to the prepared rule rather than interpreted. -- """ -- -- def passthrough(caller): -- return u'{%% call %s() %%}%s{%% endcall %%}' % (call, caller()) -- -- parts = call.split('.') -- current_level = self.passthrough_globals -- for part in parts[:-1]: -- if part not in current_level: -- current_level[part] = {} -- current_level = current_level[part] -- current_level[parts[-1]] = passthrough -- -- def build_template(self, rules): -- """ -- Construct a template that can produce CSR generator strings. -- -- :param rules: list of FieldMapping to use to populate the template. -- -- :returns: jinja2.Template that can be rendered to produce the CSR data. -- """ -- syntax_rules = [] -- for field_mapping in rules: -- data_rules_prepared = [ -- self._prepare_data_rule(rule) -- for rule in field_mapping.data_rules] -- -- data_sources = [] -- for xrule in field_mapping.data_rules: -- data_source = xrule.options.get('data_source') -- if data_source: -- data_sources.append(data_source) -- -- syntax_rules.append(self._prepare_syntax_rule( -- field_mapping.syntax_rule, data_rules_prepared, -- field_mapping.description, data_sources)) -- -- template_params = self._get_template_params(syntax_rules) -- base_template = self.jinja2.get_template( -- self.base_template_name, globals=self.passthrough_globals) -- -- try: -- combined_template_source = base_template.render(**template_params) -- except jinja2.UndefinedError: -- logger.debug(traceback.format_exc()) -- raise errors.CSRTemplateError(reason=_( -- 'Template error when formatting certificate data')) -- -- logger.debug( -- 'Formatting with template: %s', combined_template_source) -- combined_template = self.jinja2.from_string(combined_template_source) -- -- return combined_template -- -- def _wrap_conditional(self, rule, condition): -- rule = '{%% if %s %%}%s{%% endif %%}' % (condition, rule) -- return rule -- -- def _wrap_required(self, rule, description): -- template = '{%% filter required("%s") %%}%s{%% endfilter %%}' % ( -- description, rule) -- -- return template -- -- def _prepare_data_rule(self, data_rule): -- template = data_rule.template -- -- data_source = data_rule.options.get('data_source') -- if data_source: -- template = self._wrap_conditional(template, data_source) -- -- return template -- -- def _prepare_syntax_rule( -- self, syntax_rule, data_rules, description, data_sources): -- logger.debug('Syntax rule template: %s', syntax_rule.template) -- template = self.jinja2.from_string( -- syntax_rule.template, globals=self.passthrough_globals) -- is_required = syntax_rule.options.get('required', False) -- try: -- prepared_template = template.render(datarules=data_rules) -- except jinja2.UndefinedError: -- logger.debug(traceback.format_exc()) -- raise errors.CSRTemplateError(reason=_( -- 'Template error when formatting certificate data')) -- -- if data_sources: -- combinator = ' %s ' % syntax_rule.options.get( -- 'data_source_combinator', 'or') -- condition = combinator.join(data_sources) -- prepared_template = self._wrap_conditional( -- prepared_template, condition) -- -- if is_required: -- prepared_template = self._wrap_required( -- prepared_template, description) -- -- return prepared_template -- -- def _get_template_params(self, syntax_rules): -- """ -- Package the syntax rules into fields expected by the base template. -- -- :param syntax_rules: list of prepared syntax rules to be included in -- the template. -- -- :returns: dict of values needed to render the base template. -- """ -- raise NotImplementedError('Formatter class must be subclassed') -- -- --class OpenSSLFormatter(Formatter): -- """Formatter class generating the openssl config-file format.""" -- -- base_template_name = 'openssl_base.tmpl' -- -- # Syntax rules are wrapped in this data structure, to keep track of whether -- # each goes in the extension or the root section -- SyntaxRule = collections.namedtuple( -- 'SyntaxRule', ['template', 'is_extension']) -- -- def __init__(self, *args, **kwargs): -- super(OpenSSLFormatter, self).__init__(*args, **kwargs) -- self._define_passthrough('openssl.section') -- -- def _get_template_params(self, syntax_rules): -- parameters = [rule.template for rule in syntax_rules -- if not rule.is_extension] -- extensions = [rule.template for rule in syntax_rules -- if rule.is_extension] -- -- return {'parameters': parameters, 'extensions': extensions} -- -- def _prepare_syntax_rule( -- self, syntax_rule, data_rules, description, data_sources): -- """Overrides method to pull out whether rule is an extension or not.""" -- prepared_template = super(OpenSSLFormatter, self)._prepare_syntax_rule( -- syntax_rule, data_rules, description, data_sources) -- is_extension = syntax_rule.options.get('extension', False) -- return self.SyntaxRule(prepared_template, is_extension) -- -- --class FieldMapping: -- """Representation of the rules needed to construct a complete cert field. -- -- Attributes: -- description: str, a name or description of this field, to be used in -- messages -- syntax_rule: Rule, the rule defining the syntax of this field -- data_rules: list of Rule, the rules that produce data to be stored in -- this field -- """ -- __slots__ = ['description', 'syntax_rule', 'data_rules'] -- -- def __init__(self, description, syntax_rule, data_rules): -- self.description = description -- self.syntax_rule = syntax_rule -- self.data_rules = data_rules -- -- --class Rule: -- __slots__ = ['name', 'template', 'options'] -- -- def __init__(self, name, template, options): -- self.name = name -- self.template = template -- self.options = options -- -- --class RuleProvider: -- def rules_for_profile(self, profile_id): -- """ -- Return the rules needed to build a CSR using the given profile. -- -- :param profile_id: str, name of the CSR generation profile to use -- -- :returns: list of FieldMapping, filled out with the appropriate rules -- """ -- raise NotImplementedError('RuleProvider class must be subclassed') -- -- --class FileRuleProvider(RuleProvider): -- def __init__(self, csr_data_dir=None): -- self.rules = {} -- self._csrgen_data_dirs = [] -- if csr_data_dir is not None: -- self._csrgen_data_dirs.append(csr_data_dir) -- self._csrgen_data_dirs.append( -- os.path.join(api.env.confdir, 'csrgen') -- ) -- self._csrgen_data_dirs.append( -- pkg_resources.resource_filename('ipaclient', 'csrgen') -- ) -- -- def _open(self, subdir, filename): -- for data_dir in self._csrgen_data_dirs: -- path = os.path.join(data_dir, subdir, filename) -- try: -- return open(path) -- except IOError as e: -- if e.errno != errno.ENOENT: -- raise -- raise IOError( -- errno.ENOENT, -- "'{}' not found in {}".format( -- os.path.join(subdir, filename), -- ", ".join(self._csrgen_data_dirs) -- ) -- ) -- -- def _rule(self, rule_name): -- if rule_name not in self.rules: -- try: -- with self._open('rules', '%s.json' % rule_name) as f: -- ruleconf = json.load(f) -- except IOError: -- raise errors.NotFound( -- reason=_('No generation rule %(rulename)s found.') % -- {'rulename': rule_name}) -- -- try: -- rule = ruleconf['rule'] -- except KeyError: -- raise errors.EmptyResult( -- reason=_('Generation rule "%(rulename)s" is missing the' -- ' "rule" key') % {'rulename': rule_name}) -- -- options = ruleconf.get('options', {}) -- -- self.rules[rule_name] = Rule( -- rule_name, rule['template'], options) -- -- return self.rules[rule_name] -- -- def rules_for_profile(self, profile_id): -- try: -- with self._open('profiles', '%s.json' % profile_id) as f: -- profile = json.load(f) -- except IOError: -- raise errors.NotFound( -- reason=_('No CSR generation rules are defined for profile' -- ' %(profile_id)s') % {'profile_id': profile_id}) -- -- field_mappings = [] -- for field in profile: -- syntax_rule = self._rule(field['syntax']) -- data_rules = [self._rule(name) for name in field['data']] -- field_mappings.append(FieldMapping( -- syntax_rule.name, syntax_rule, data_rules)) -- return field_mappings -- -- --class CSRGenerator: -- def __init__(self, rule_provider, formatter_class=OpenSSLFormatter): -- self.rule_provider = rule_provider -- self.formatter = formatter_class() -- -- def csr_config(self, principal, config, profile_id): -- render_data = {'subject': principal, 'config': config} -- -- rules = self.rule_provider.rules_for_profile(profile_id) -- template = self.formatter.build_template(rules) -- -- try: -- config = template.render(render_data) -- except jinja2.UndefinedError: -- logger.debug(traceback.format_exc()) -- raise errors.CSRTemplateError(reason=_( -- 'Template error when formatting certificate data')) -- -- return config -- -- --class CSRLibraryAdaptor: -- def get_subject_public_key_info(self): -- raise NotImplementedError('Use a subclass of CSRLibraryAdaptor') -- -- def sign_csr(self, certification_request_info): -- """Sign a CertificationRequestInfo. -- -- :returns: bytes, a DER-encoded signed CSR. -- """ -- raise NotImplementedError('Use a subclass of CSRLibraryAdaptor') -- -- --class OpenSSLAdaptor: -- def __init__(self, key=None, key_filename=None, password_filename=None): -- """ -- Must provide either ``key_filename`` or ``key``. -- -- """ -- if key_filename is not None: -- with open(key_filename, 'rb') as key_file: -- key_bytes = key_file.read() -- -- password = None -- if password_filename is not None: -- with open(password_filename, 'rb') as password_file: -- password = password_file.read().strip() -- -- self._key = load_pem_private_key( -- key_bytes, password, default_backend()) -- -- elif key is not None: -- self._key = key -- -- else: -- raise ValueError("Must provide 'key' or 'key_filename'") -- -- def key(self): -- return self._key -- -- def get_subject_public_key_info(self): -- pubkey_info = self.key().public_key().public_bytes( -- Encoding.DER, PublicFormat.SubjectPublicKeyInfo) -- return pubkey_info -- -- def sign_csr(self, certification_request_info): -- reqinfo = decoder.decode( -- certification_request_info, rfc2314.CertificationRequestInfo())[0] -- csr = rfc2314.CertificationRequest() -- csr.setComponentByName('certificationRequestInfo', reqinfo) -- -- algorithm = rfc2314.SignatureAlgorithmIdentifier() -- algorithm.setComponentByName( -- 'algorithm', univ.ObjectIdentifier( -- '1.2.840.113549.1.1.11')) # sha256WithRSAEncryption -- csr.setComponentByName('signatureAlgorithm', algorithm) -- -- signature = self.key().sign( -- certification_request_info, -- padding.PKCS1v15(), -- hashes.SHA256() -- ) -- asn1sig = univ.BitString("'{sig}'H".format( -- sig=codecs.encode(signature, 'hex') -- .decode('ascii')) -- ) -- csr.setComponentByName('signature', asn1sig) -- return encoder.encode(csr) -- -- --class NSSAdaptor: -- def __init__(self, database, password_filename): -- self.database = database -- self.password_filename = password_filename -- self.nickname = base64.b32encode(os.urandom(40)) -- -- def get_subject_public_key_info(self): -- temp_cn = base64.b32encode(os.urandom(40)).decode('ascii') -- -- password_args = [] -- if self.password_filename is not None: -- password_args = ['-f', self.password_filename] -- -- subprocess.check_call( -- ['certutil', '-S', '-n', self.nickname, '-s', 'CN=%s' % temp_cn, -- '-x', '-t', ',,', '-d', self.database] + password_args) -- cert_pem = subprocess.check_output( -- ['certutil', '-L', '-n', self.nickname, '-a', -- '-d', self.database] + password_args) -- -- cert = load_pem_x509_certificate(cert_pem, default_backend()) -- pubkey_info = cert.public_key().public_bytes( -- Encoding.DER, PublicFormat.SubjectPublicKeyInfo) -- -- return pubkey_info -- -- def sign_csr(self, certification_request_info): -- raise NotImplementedError('NSS is not yet supported') -diff -urN freeipa-4.8.0/ipaclient/plugins/cert.py freeipa-4.8.0.removed_csrgen/ipaclient/plugins/cert.py ---- freeipa-4.8.0/ipaclient/plugins/cert.py 2019-07-03 08:42:41.978537802 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/plugins/cert.py 2019-07-03 13:24:38.477222594 +0200 -@@ -21,8 +21,6 @@ - - import base64 - --import six -- - from ipaclient.frontend import MethodOverride - from ipalib import errors - from ipalib import x509 -@@ -31,9 +29,6 @@ - from ipalib.plugable import Registry - from ipalib.text import _ - --if six.PY3: -- unicode = str -- - register = Registry() - - -@@ -73,87 +68,12 @@ - - @register(override=True, no_fail=True) - class cert_request(CertRetrieveOverride): -- takes_options = CertRetrieveOverride.takes_options + ( -- Str( -- 'database?', -- label=_('Path to NSS database'), -- doc=_('Path to NSS database to use for private key'), -- ), -- Str( -- 'private_key?', -- label=_('Path to private key file'), -- doc=_('Path to PEM file containing a private key'), -- ), -- Str( -- 'password_file?', -- label=_( -- 'File containing a password for the private key or database'), -- ), -- Str( -- 'csr_profile_id?', -- label=_('Name of CSR generation profile (if not the same as' -- ' profile_id)'), -- ), -- ) -- - def get_args(self): - for arg in super(cert_request, self).get_args(): - if arg.name == 'csr': - arg = arg.clone_retype(arg.name, File, required=False) - yield arg - -- def forward(self, csr=None, **options): -- database = options.pop('database', None) -- private_key = options.pop('private_key', None) -- csr_profile_id = options.pop('csr_profile_id', None) -- password_file = options.pop('password_file', None) -- -- if csr is None: -- # Deferred import, ipaclient.csrgen is expensive to load. -- # see https://pagure.io/freeipa/issue/7484 -- from ipaclient import csrgen -- -- if database: -- adaptor = csrgen.NSSAdaptor(database, password_file) -- elif private_key: -- adaptor = csrgen.OpenSSLAdaptor( -- key_filename=private_key, password_filename=password_file) -- else: -- raise errors.InvocationError( -- message=u"One of 'database' or 'private_key' is required") -- -- pubkey_info = adaptor.get_subject_public_key_info() -- pubkey_info_b64 = base64.b64encode(pubkey_info) -- -- # If csr_profile_id is passed, that takes precedence. -- # Otherwise, use profile_id. If neither are passed, the default -- # in cert_get_requestdata will be used. -- profile_id = csr_profile_id -- if profile_id is None: -- profile_id = options.get('profile_id') -- -- response = self.api.Command.cert_get_requestdata( -- profile_id=profile_id, -- principal=options.get('principal'), -- public_key_info=pubkey_info_b64) -- -- req_info_b64 = response['result']['request_info'] -- req_info = base64.b64decode(req_info_b64) -- -- csr = adaptor.sign_csr(req_info) -- -- if not csr: -- raise errors.CertificateOperationError( -- error=(_('Generated CSR was empty'))) -- -- else: -- if database is not None or private_key is not None: -- raise errors.MutuallyExclusiveError(reason=_( -- "Options 'database' and 'private_key' are not compatible" -- " with 'csr'")) -- -- return super(cert_request, self).forward(csr, **options) -- - - @register(override=True, no_fail=True) - class cert_show(CertRetrieveOverride): -diff -urN freeipa-4.8.0/ipaclient/plugins/cert.py.orig freeipa-4.8.0.removed_csrgen/ipaclient/plugins/cert.py.orig ---- freeipa-4.8.0/ipaclient/plugins/cert.py.orig 1970-01-01 01:00:00.000000000 +0100 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/plugins/cert.py.orig 2019-07-03 13:24:38.478222573 +0200 -@@ -0,0 +1,215 @@ -+# Authors: -+# Andrew Wnuk <awnuk@redhat.com> -+# Jason Gerard DeRose <jderose@redhat.com> -+# John Dennis <jdennis@redhat.com> -+# -+# Copyright (C) 2009 Red Hat -+# see file 'COPYING' for use and warranty information -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation, either version 3 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see <http://www.gnu.org/licenses/>. -+ -+import base64 -+ -+import six -+ -+from ipaclient.frontend import MethodOverride -+from ipalib import errors -+from ipalib import x509 -+from ipalib import util -+from ipalib.parameters import BinaryFile, File, Flag, Str -+from ipalib.plugable import Registry -+from ipalib.text import _ -+ -+if six.PY3: -+ unicode = str -+ -+register = Registry() -+ -+ -+class CertRetrieveOverride(MethodOverride): -+ takes_options = ( -+ Str( -+ 'certificate_out?', -+ doc=_('Write certificate (chain if --chain used) to file'), -+ include='cli', -+ cli_metavar='FILE', -+ ), -+ ) -+ -+ def forward(self, *args, **options): -+ if 'certificate_out' in options: -+ certificate_out = options.pop('certificate_out') -+ try: -+ util.check_writable_file(certificate_out) -+ except errors.FileError as e: -+ raise errors.ValidationError(name='certificate-out', -+ error=str(e)) -+ else: -+ certificate_out = None -+ -+ result = super(CertRetrieveOverride, self).forward(*args, **options) -+ -+ if certificate_out is not None: -+ if options.get('chain', False): -+ certs = result['result']['certificate_chain'] -+ else: -+ certs = [base64.b64decode(result['result']['certificate'])] -+ certs = (x509.load_der_x509_certificate(cert) for cert in certs) -+ x509.write_certificate_list(certs, certificate_out) -+ -+ return result -+ -+ -+@register(override=True, no_fail=True) -+class cert_request(CertRetrieveOverride): -+ takes_options = CertRetrieveOverride.takes_options + ( -+ Str( -+ 'database?', -+ label=_('Path to NSS database'), -+ doc=_('Path to NSS database to use for private key'), -+ ), -+ Str( -+ 'private_key?', -+ label=_('Path to private key file'), -+ doc=_('Path to PEM file containing a private key'), -+ ), -+ Str( -+ 'password_file?', -+ label=_( -+ 'File containing a password for the private key or database'), -+ ), -+ Str( -+ 'csr_profile_id?', -+ label=_('Name of CSR generation profile (if not the same as' -+ ' profile_id)'), -+ ), -+ ) -+ -+ def get_args(self): -+ for arg in super(cert_request, self).get_args(): -+ if arg.name == 'csr': -+ arg = arg.clone_retype(arg.name, File, required=False) -+ yield arg -+ -+ def forward(self, csr=None, **options): -+ database = options.pop('database', None) -+ private_key = options.pop('private_key', None) -+ csr_profile_id = options.pop('csr_profile_id', None) -+ password_file = options.pop('password_file', None) -+ -+ if csr is None: -+ # Deferred import, ipaclient.csrgen is expensive to load. -+ # see https://pagure.io/freeipa/issue/7484 -+ from ipaclient import csrgen -+ -+ if database: -+ adaptor = csrgen.NSSAdaptor(database, password_file) -+ elif private_key: -+ adaptor = csrgen.OpenSSLAdaptor( -+ key_filename=private_key, password_filename=password_file) -+ else: -+ raise errors.InvocationError( -+ message=u"One of 'database' or 'private_key' is required") -+ -+ pubkey_info = adaptor.get_subject_public_key_info() -+ pubkey_info_b64 = base64.b64encode(pubkey_info) -+ -+ # If csr_profile_id is passed, that takes precedence. -+ # Otherwise, use profile_id. If neither are passed, the default -+ # in cert_get_requestdata will be used. -+ profile_id = csr_profile_id -+ if profile_id is None: -+ profile_id = options.get('profile_id') -+ -+ response = self.api.Command.cert_get_requestdata( -+ profile_id=profile_id, -+ principal=options.get('principal'), -+ public_key_info=pubkey_info_b64) -+ -+ req_info_b64 = response['result']['request_info'] -+ req_info = base64.b64decode(req_info_b64) -+ -+ csr = adaptor.sign_csr(req_info) -+ -+ if not csr: -+ raise errors.CertificateOperationError( -+ error=(_('Generated CSR was empty'))) -+ -+ else: -+ if database is not None or private_key is not None: -+ raise errors.MutuallyExclusiveError(reason=_( -+ "Options 'database' and 'private_key' are not compatible" -+ " with 'csr'")) -+ -+ return super(cert_request, self).forward(csr, **options) -+ -+ -+@register(override=True, no_fail=True) -+class cert_show(CertRetrieveOverride): -+ def get_options(self): -+ for option in super(cert_show, self).get_options(): -+ if option.name == 'out': -+ # skip server-defined --out -+ continue -+ if option.name == 'certificate_out': -+ # add --out as a deprecated alias of --certificate-out -+ option = option.clone_rename( -+ 'out', -+ cli_name='certificate_out', -+ deprecated_cli_aliases={'out'}, -+ ) -+ yield option -+ -+ def forward(self, *args, **options): -+ try: -+ options['certificate_out'] = options.pop('out') -+ except KeyError: -+ pass -+ -+ return super(cert_show, self).forward(*args, **options) -+ -+ -+@register(override=True, no_fail=True) -+class cert_remove_hold(MethodOverride): -+ has_output_params = ( -+ Flag('unrevoked', -+ label=_('Unrevoked'), -+ ), -+ Str('error_string', -+ label=_('Error'), -+ ), -+ ) -+ -+ -+@register(override=True, no_fail=True) -+class cert_find(MethodOverride): -+ takes_options = ( -+ BinaryFile( -+ 'file?', -+ label=_("Input filename"), -+ doc=_('File to load the certificate from.'), -+ include='cli', -+ ), -+ ) -+ -+ def forward(self, *args, **options): -+ if self.api.env.context == 'cli': -+ if 'certificate' in options and 'file' in options: -+ raise errors.MutuallyExclusiveError( -+ reason=_("cannot specify both raw certificate and file")) -+ if 'certificate' not in options and 'file' in options: -+ options['certificate'] = x509.load_unknown_x509_certificate( -+ options.pop('file')) -+ -+ return super(cert_find, self).forward(*args, **options) -diff -urN freeipa-4.8.0/ipaclient/plugins/csrgen.py freeipa-4.8.0.removed_csrgen/ipaclient/plugins/csrgen.py ---- freeipa-4.8.0/ipaclient/plugins/csrgen.py 2019-07-03 08:42:41.990537623 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/plugins/csrgen.py 1970-01-01 01:00:00.000000000 +0100 -@@ -1,128 +0,0 @@ --# --# Copyright (C) 2016 FreeIPA Contributors see COPYING for license --# -- --import base64 -- --import six -- --from ipalib import api --from ipalib import errors --from ipalib import output --from ipalib import util --from ipalib.frontend import Local, Str --from ipalib.parameters import Bytes, Principal --from ipalib.plugable import Registry --from ipalib.text import _ --from ipapython import dogtag -- -- --if six.PY3: -- unicode = str -- --register = Registry() -- --__doc__ = _(""" --Commands to build certificate requests automatically --""") -- -- --@register() --class cert_get_requestdata(Local): -- __doc__ = _('Gather data for a certificate signing request.') -- -- NO_CLI = True -- -- takes_options = ( -- Principal( -- 'principal', -- label=_('Principal'), -- doc=_('Principal for this certificate (e.g.' -- ' HTTP/test.example.com)'), -- ), -- Str( -- 'profile_id?', -- label=_('Profile ID'), -- doc=_('CSR Generation Profile to use'), -- ), -- Bytes( -- 'public_key_info', -- label=_('Subject Public Key Info'), -- doc=_('DER-encoded SubjectPublicKeyInfo structure'), -- ), -- Str( -- 'out?', -- doc=_('Write CertificationRequestInfo to file'), -- ), -- ) -- -- has_output = ( -- output.Output( -- 'result', -- type=dict, -- doc=_('Dictionary mapping variable name to value'), -- ), -- ) -- -- has_output_params = ( -- Str( -- 'request_info', -- label=_('CertificationRequestInfo structure'), -- ) -- ) -- -- def execute(self, *args, **options): -- # Deferred import, ipaclient.csrgen is expensive to load. -- # see https://pagure.io/freeipa/issue/7484 -- from ipaclient import csrgen -- from ipaclient import csrgen_ffi -- -- if 'out' in options: -- util.check_writable_file(options['out']) -- -- principal = options.get('principal') -- profile_id = options.get('profile_id') -- if profile_id is None: -- profile_id = dogtag.DEFAULT_PROFILE -- public_key_info = options.get('public_key_info') -- public_key_info = base64.b64decode(public_key_info) -- -- if self.api.env.in_server: -- backend = self.api.Backend.ldap2 -- else: -- backend = self.api.Backend.rpcclient -- if not backend.isconnected(): -- backend.connect() -- -- try: -- if principal.is_host: -- principal_obj = api.Command.host_show( -- principal.hostname, all=True) -- elif principal.is_service: -- principal_obj = api.Command.service_show( -- unicode(principal), all=True) -- elif principal.is_user: -- principal_obj = api.Command.user_show( -- principal.username, all=True) -- except errors.NotFound: -- raise errors.NotFound( -- reason=_("The principal for this request doesn't exist.")) -- principal_obj = principal_obj['result'] -- config = api.Command.config_show()['result'] -- -- generator = csrgen.CSRGenerator(csrgen.FileRuleProvider()) -- -- csr_config = generator.csr_config(principal_obj, config, profile_id) -- request_info = base64.b64encode(csrgen_ffi.build_requestinfo( -- csr_config.encode('utf8'), public_key_info)) -- -- result = {} -- if 'out' in options: -- with open(options['out'], 'wb') as f: -- f.write(request_info) -- else: -- result = dict(request_info=request_info) -- -- return dict( -- result=result -- ) -diff -urN freeipa-4.8.0/ipaclient/setup.py freeipa-4.8.0.removed_csrgen/ipaclient/setup.py ---- freeipa-4.8.0/ipaclient/setup.py 2019-07-03 08:42:41.836539916 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipaclient/setup.py 2019-07-03 13:24:38.479222551 +0200 -@@ -41,13 +41,6 @@ - "ipaclient.remote_plugins.2_156", - "ipaclient.remote_plugins.2_164", - ], -- package_data={ -- 'ipaclient': [ -- 'csrgen/profiles/*.json', -- 'csrgen/rules/*.json', -- 'csrgen/templates/*.tmpl', -- ], -- }, - install_requires=[ - "cryptography", - "ipalib", -@@ -63,7 +56,6 @@ - extras_require={ - "install": ["ipaplatform"], - "otptoken_yubikey": ["python-yubico", "pyusb"], -- "csrgen": ["cffi", "jinja2"], - "ldap": ["python-ldap"], # ipapython.ipaldap - }, - zip_safe=False, -diff -urN freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf ---- freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf 2019-07-03 08:42:45.972478335 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/configs/caIPAserviceCert.conf 1970-01-01 01:00:00.000000000 +0100 -@@ -1,16 +0,0 @@ --[ req ] --prompt = no --encrypt_key = no -- --distinguished_name = sec0 --req_extensions = sec2 -- --[ sec0 ] --O=DOMAIN.EXAMPLE.COM --CN=machine.example.com -- --[ sec1 ] --DNS = machine.example.com -- --[ sec2 ] --subjectAltName = @sec1 -diff -urN freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf ---- freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf 2019-07-03 08:42:45.976478276 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/configs/userCert.conf 1970-01-01 01:00:00.000000000 +0100 -@@ -1,16 +0,0 @@ --[ req ] --prompt = no --encrypt_key = no -- --distinguished_name = sec0 --req_extensions = sec2 -- --[ sec0 ] --O=DOMAIN.EXAMPLE.COM --CN=testuser -- --[ sec1 ] --email = testuser@example.com -- --[ sec2 ] --subjectAltName = @sec1 -diff -urN freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json ---- freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json 2019-07-03 08:42:45.980478216 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/profiles/profile.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --[ -- { -- "syntax": "basic", -- "data": [ -- "options" -- ] -- } --] -diff -urN freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json ---- freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json 2019-07-03 08:42:45.984478157 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/rules/basic.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,5 +0,0 @@ --{ -- "rule": { -- "template": "openssl_rule" -- } --} -diff -urN freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/rules/options.json freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/rules/options.json ---- freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/rules/options.json 2019-07-03 08:42:45.988478097 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/rules/options.json 1970-01-01 01:00:00.000000000 +0100 -@@ -1,8 +0,0 @@ --{ -- "rule": { -- "template": "openssl_rule" -- }, -- "options": { -- "rule_option": true -- } --} -diff -urN freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl ---- freeipa-4.8.0/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl 2019-07-03 08:42:45.993478023 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/data/test_csrgen/templates/identity_base.tmpl 1970-01-01 01:00:00.000000000 +0100 -@@ -1 +0,0 @@ --{{ options|join(";") }} -diff -urN freeipa-4.8.0/ipatests/test_ipaclient/test_csrgen.py freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/test_csrgen.py ---- freeipa-4.8.0/ipatests/test_ipaclient/test_csrgen.py 2019-07-03 08:42:45.963478469 +0200 -+++ freeipa-4.8.0.removed_csrgen/ipatests/test_ipaclient/test_csrgen.py 1970-01-01 01:00:00.000000000 +0100 -@@ -1,304 +0,0 @@ --# --# Copyright (C) 2016 FreeIPA Contributors see COPYING for license --# -- --import os --import pytest -- --from cryptography.hazmat.backends import default_backend --from cryptography.hazmat.primitives.asymmetric import rsa --from cryptography import x509 -- --from ipaclient import csrgen, csrgen_ffi --from ipalib import errors -- --BASE_DIR = os.path.dirname(__file__) --CSR_DATA_DIR = os.path.join(BASE_DIR, 'data', 'test_csrgen') -- -- --@pytest.fixture --def formatter(): -- return csrgen.Formatter(csr_data_dir=CSR_DATA_DIR) -- -- --@pytest.fixture --def rule_provider(): -- return csrgen.FileRuleProvider(csr_data_dir=CSR_DATA_DIR) -- -- --@pytest.fixture --def generator(): -- return csrgen.CSRGenerator(csrgen.FileRuleProvider()) -- -- --class StubRuleProvider(csrgen.RuleProvider): -- def __init__(self): -- self.syntax_rule = csrgen.Rule( -- 'syntax', '{{datarules|join(",")}}', {}) -- self.data_rule = csrgen.Rule('data', 'data_template', {}) -- self.field_mapping = csrgen.FieldMapping( -- 'example', self.syntax_rule, [self.data_rule]) -- self.rules = [self.field_mapping] -- -- def rules_for_profile(self, profile_id): -- return self.rules -- -- --class IdentityFormatter(csrgen.Formatter): -- base_template_name = 'identity_base.tmpl' -- -- def __init__(self): -- super(IdentityFormatter, self).__init__(csr_data_dir=CSR_DATA_DIR) -- -- def _get_template_params(self, syntax_rules): -- return {'options': syntax_rules} -- -- --class test_Formatter: -- def test_prepare_data_rule_with_data_source(self, formatter): -- data_rule = csrgen.Rule('uid', '{{subject.uid.0}}', -- {'data_source': 'subject.uid.0'}) -- prepared = formatter._prepare_data_rule(data_rule) -- assert prepared == '{% if subject.uid.0 %}{{subject.uid.0}}{% endif %}' -- -- def test_prepare_data_rule_no_data_source(self, formatter): -- """Not a normal case, but we should handle it anyway""" -- data_rule = csrgen.Rule('uid', 'static_text', {}) -- prepared = formatter._prepare_data_rule(data_rule) -- assert prepared == 'static_text' -- -- def test_prepare_syntax_rule_with_data_sources(self, formatter): -- syntax_rule = csrgen.Rule( -- 'example', '{{datarules|join(",")}}', {}) -- data_rules = ['{{subject.field1}}', '{{subject.field2}}'] -- data_sources = ['subject.field1', 'subject.field2'] -- prepared = formatter._prepare_syntax_rule( -- syntax_rule, data_rules, 'example', data_sources) -- -- assert prepared == ( -- '{% if subject.field1 or subject.field2 %}{{subject.field1}},' -- '{{subject.field2}}{% endif %}') -- -- def test_prepare_syntax_rule_with_combinator(self, formatter): -- syntax_rule = csrgen.Rule('example', '{{datarules|join(",")}}', -- {'data_source_combinator': 'and'}) -- data_rules = ['{{subject.field1}}', '{{subject.field2}}'] -- data_sources = ['subject.field1', 'subject.field2'] -- prepared = formatter._prepare_syntax_rule( -- syntax_rule, data_rules, 'example', data_sources) -- -- assert prepared == ( -- '{% if subject.field1 and subject.field2 %}{{subject.field1}},' -- '{{subject.field2}}{% endif %}') -- -- def test_prepare_syntax_rule_required(self, formatter): -- syntax_rule = csrgen.Rule('example', '{{datarules|join(",")}}', -- {'required': True}) -- data_rules = ['{{subject.field1}}'] -- data_sources = ['subject.field1'] -- prepared = formatter._prepare_syntax_rule( -- syntax_rule, data_rules, 'example', data_sources) -- -- assert prepared == ( -- '{% filter required("example") %}{% if subject.field1 %}' -- '{{subject.field1}}{% endif %}{% endfilter %}') -- -- def test_prepare_syntax_rule_passthrough(self, formatter): -- """ -- Calls to macros defined as passthrough are still call tags in the final -- template. -- """ -- formatter._define_passthrough('example.macro') -- -- syntax_rule = csrgen.Rule( -- 'example', -- '{% call example.macro() %}{{datarules|join(",")}}{% endcall %}', -- {}) -- data_rules = ['{{subject.field1}}'] -- data_sources = ['subject.field1'] -- prepared = formatter._prepare_syntax_rule( -- syntax_rule, data_rules, 'example', data_sources) -- -- assert prepared == ( -- '{% if subject.field1 %}{% call example.macro() %}' -- '{{subject.field1}}{% endcall %}{% endif %}') -- -- def test_prepare_syntax_rule_no_data_sources(self, formatter): -- """Not a normal case, but we should handle it anyway""" -- syntax_rule = csrgen.Rule( -- 'example', '{{datarules|join(",")}}', {}) -- data_rules = ['rule1', 'rule2'] -- data_sources = [] -- prepared = formatter._prepare_syntax_rule( -- syntax_rule, data_rules, 'example', data_sources) -- -- assert prepared == 'rule1,rule2' -- -- --class test_FileRuleProvider: -- def test_rule_basic(self, rule_provider): -- rule_name = 'basic' -- -- rule = rule_provider._rule(rule_name) -- -- assert rule.template == 'openssl_rule' -- -- def test_rule_global_options(self, rule_provider): -- rule_name = 'options' -- -- rule = rule_provider._rule(rule_name) -- -- assert rule.options['rule_option'] is True -- -- def test_rule_nosuchrule(self, rule_provider): -- with pytest.raises(errors.NotFound): -- rule_provider._rule('nosuchrule') -- -- def test_rules_for_profile_success(self, rule_provider): -- rules = rule_provider.rules_for_profile('profile') -- -- assert len(rules) == 1 -- field_mapping = rules[0] -- assert field_mapping.syntax_rule.name == 'basic' -- assert len(field_mapping.data_rules) == 1 -- assert field_mapping.data_rules[0].name == 'options' -- -- def test_rules_for_profile_nosuchprofile(self, rule_provider): -- with pytest.raises(errors.NotFound): -- rule_provider.rules_for_profile('nosuchprofile') -- -- --class test_CSRGenerator: -- def test_userCert_OpenSSL(self, generator): -- principal = { -- 'uid': ['testuser'], -- 'mail': ['testuser@example.com'], -- } -- config = { -- 'ipacertificatesubjectbase': [ -- 'O=DOMAIN.EXAMPLE.COM' -- ], -- } -- -- script = generator.csr_config(principal, config, 'userCert') -- with open(os.path.join( -- CSR_DATA_DIR, 'configs', 'userCert.conf')) as f: -- expected_script = f.read() -- assert script == expected_script -- -- def test_caIPAserviceCert_OpenSSL(self, generator): -- principal = { -- 'krbprincipalname': [ -- 'HTTP/machine.example.com@DOMAIN.EXAMPLE.COM' -- ], -- } -- config = { -- 'ipacertificatesubjectbase': [ -- 'O=DOMAIN.EXAMPLE.COM' -- ], -- } -- -- script = generator.csr_config( -- principal, config, 'caIPAserviceCert') -- with open(os.path.join( -- CSR_DATA_DIR, 'configs', 'caIPAserviceCert.conf')) as f: -- expected_script = f.read() -- assert script == expected_script -- -- def test_works_with_lowercase_attr_type_shortname(self, generator): -- principal = { -- 'uid': ['testuser'], -- 'mail': ['testuser@example.com'], -- } -- template_env = { -- 'ipacertificatesubjectbase': [ -- 'o=DOMAIN.EXAMPLE.COM' # lower-case attr type shortname -- ], -- } -- config = generator.csr_config(principal, template_env, 'userCert') -- -- key = rsa.generate_private_key( -- public_exponent=65537, -- key_size=2048, -- backend=default_backend(), -- ) -- adaptor = csrgen.OpenSSLAdaptor(key=key) -- -- reqinfo = bytes(csrgen_ffi.build_requestinfo( -- config.encode('utf-8'), adaptor.get_subject_public_key_info())) -- csr_der = adaptor.sign_csr(reqinfo) -- csr = x509.load_der_x509_csr(csr_der, default_backend()) -- assert ( -- csr.subject.get_attributes_for_oid(x509.NameOID.COMMON_NAME) -- == [x509.NameAttribute(x509.NameOID.COMMON_NAME, u'testuser')] -- ) -- assert ( -- csr.subject.get_attributes_for_oid(x509.NameOID.ORGANIZATION_NAME) -- == [x509.NameAttribute( -- x509.NameOID.ORGANIZATION_NAME, u'DOMAIN.EXAMPLE.COM')] -- ) -- -- def test_unrecognised_attr_type_raises(self, generator): -- principal = { -- 'uid': ['testuser'], -- 'mail': ['testuser@example.com'], -- } -- template_env = { -- 'ipacertificatesubjectbase': [ -- 'X=DOMAIN.EXAMPLE.COM' # unrecognised attr type -- ], -- } -- config = generator.csr_config(principal, template_env, 'userCert') -- -- key = rsa.generate_private_key( -- public_exponent=65537, -- key_size=2048, -- backend=default_backend(), -- ) -- adaptor = csrgen.OpenSSLAdaptor(key=key) -- -- with pytest.raises( -- errors.CSRTemplateError, -- match=r'^unrecognised attribute type: X$'): -- csrgen_ffi.build_requestinfo( -- config.encode('utf-8'), adaptor.get_subject_public_key_info()) -- -- --class test_rule_handling: -- def test_optionalAttributeMissing(self, generator): -- principal = {'uid': 'testuser'} -- rule_provider = StubRuleProvider() -- rule_provider.data_rule.template = '{{subject.mail}}' -- rule_provider.data_rule.options = {'data_source': 'subject.mail'} -- generator = csrgen.CSRGenerator( -- rule_provider, formatter_class=IdentityFormatter) -- -- script = generator.csr_config( -- principal, {}, 'example') -- assert script == '\n' -- -- def test_twoDataRulesOneMissing(self, generator): -- principal = {'uid': 'testuser'} -- rule_provider = StubRuleProvider() -- rule_provider.data_rule.template = '{{subject.mail}}' -- rule_provider.data_rule.options = {'data_source': 'subject.mail'} -- rule_provider.field_mapping.data_rules.append(csrgen.Rule( -- 'data2', '{{subject.uid}}', {'data_source': 'subject.uid'})) -- generator = csrgen.CSRGenerator( -- rule_provider, formatter_class=IdentityFormatter) -- -- script = generator.csr_config(principal, {}, 'example') -- assert script == ',testuser\n' -- -- def test_requiredAttributeMissing(self): -- principal = {'uid': 'testuser'} -- rule_provider = StubRuleProvider() -- rule_provider.data_rule.template = '{{subject.mail}}' -- rule_provider.data_rule.options = {'data_source': 'subject.mail'} -- rule_provider.syntax_rule.options = {'required': True} -- generator = csrgen.CSRGenerator( -- rule_provider, formatter_class=IdentityFormatter) -- -- with pytest.raises(errors.CSRTemplateError): -- _script = generator.csr_config( -- principal, {}, 'example') diff --git a/SOURCES/1003-Revert-WebUI-use-python3-rjsmin-to-minify-JavaScript.patch b/SOURCES/1003-Revert-WebUI-use-python3-rjsmin-to-minify-JavaScript.patch deleted file mode 100644 index 1c9c5b8..0000000 --- a/SOURCES/1003-Revert-WebUI-use-python3-rjsmin-to-minify-JavaScript.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 2f8e87ce9ccaab51b32a395c6cf6c764434ed0e2 Mon Sep 17 00:00:00 2001 -From: Thomas Woerner <twoerner@redhat.com> -Date: Thu, 11 Jun 2020 10:40:57 +0200 -Subject: [PATCH] Revert "WebUI: use python3-rjsmin to minify JavaScript files" - -This reverts commit d986e844bbd37ccc7a532175631a55acd315cda3. ---- - .lgtm.yml | 4 ++-- - freeipa.spec.in | 2 +- - install/ui/build/freeipa/Makefile.am | 2 +- - install/ui/src/webui.profile.js | 4 ++-- - install/ui/util/build/README | 4 ++-- - install/ui/util/compile.sh | 8 ++++---- - 6 files changed, 12 insertions(+), 12 deletions(-) - -#diff --git a/.lgtm.yml b/.lgtm.yml -#index b3898116e..e63615918 100644 -#--- a/.lgtm.yml -#+++ b/.lgtm.yml -#@@ -39,7 +39,7 @@ extraction: -# - python3-setuptools -# - python3-wheel -# - nodejs -#- - python3-rjsmin -#+ - uglifyjs -# - systemd -# - 389-ds-base-dev -# - libssl-dev -#@@ -79,7 +79,7 @@ extraction: -# - python3-setuptools -# - python3-wheel -# - nodejs -#- - python3-rjsmin -#+ - uglifyjs -# - systemd -# - 389-ds-base-dev -# - libssl-dev -#diff --git a/freeipa.spec.in b/freeipa.spec.in -#index b6eb79593..a4682497a 100755 -#--- a/freeipa.spec.in -#+++ b/freeipa.spec.in -#@@ -191,7 +191,7 @@ BuildRequires: libsss_idmap-devel -# BuildRequires: libsss_certmap-devel -# BuildRequires: libsss_nss_idmap-devel >= %{sssd_version} -# BuildRequires: nodejs(abi) -#-BuildRequires: python3-rjsmin -#+BuildRequires: uglify-js -# BuildRequires: libverto-devel -# BuildRequires: libunistring-devel -# # 0.13.0: https://bugzilla.redhat.com/show_bug.cgi?id=1584773 -diff --git a/install/ui/build/freeipa/Makefile.am b/install/ui/build/freeipa/Makefile.am -index f4d97819e..05e82f4da 100644 ---- a/install/ui/build/freeipa/Makefile.am -+++ b/install/ui/build/freeipa/Makefile.am -@@ -18,6 +18,6 @@ widgets := $(wildcard ../../src/freeipa/widgets/*.js) - nav := $(wildcard ../../src/freeipa/navigation/*.js) - - app.js: $(core) $(base) $(widgets) $(nav) -- PYTHON=$(PYTHON) $(srcdir)/../../util/make-ui.sh -+ $(srcdir)/../../util/make-ui.sh - - core.js: app.js -diff --git a/install/ui/src/webui.profile.js b/install/ui/src/webui.profile.js -index 2d4d691dc..1d7a6cc84 100644 ---- a/install/ui/src/webui.profile.js -+++ b/install/ui/src/webui.profile.js -@@ -9,7 +9,7 @@ var profile = (function(){ - releaseName: "lib", - action: "release", - -- // optimization done separately by python3-rjsmin -+ // optimization done separately by uglify.js - layerOptimize: false, - optimize: false, - cssOptimize: false, -@@ -123,4 +123,4 @@ var profile = (function(){ - } - } - }; --})(); -+})(); -\ No newline at end of file -diff --git a/install/ui/util/build/README b/install/ui/util/build/README -index 2c4e0ecac..0772532d4 100644 ---- a/install/ui/util/build/README -+++ b/install/ui/util/build/README -@@ -1,5 +1,5 @@ - build.js is builded dojo builder, with applied patches from 'patches' folder, by --itself and compiled using python3-rjsmin -+itself and compiled using uglify.js - - _base/configRhino.js is unmodifed file from dojo/dojo. Required for a build to work. - -@@ -9,4 +9,4 @@ Available via Academic Free License >= 2.1 OR the modified BSD license. - see: http://dojotoolkit.org/license for details - - = License = --Full Dojo license is in LICENSE file. -+Full Dojo license is in LICENSE file. -\ No newline at end of file -#diff --git a/install/ui/util/compile.sh b/install/ui/util/compile.sh -#index 1516b815f..d14f90ab0 100755 -#--- a/install/ui/util/compile.sh -#+++ b/install/ui/util/compile.sh -#@@ -26,14 +26,14 @@ RDIR=$DIR/../release -# usage() { -# cat <<-__EOF__; -# NAME -#- compile.sh - Compiles layer file of Dojo build using Python rjsmin. -#+ compile.sh - Compiles layer file of Dojo build using uglify.js. -# Deletes all other files. -# -# SYNOPSIS -# path/to/compile.sh [--help] --release RELEASE --layer NAME/NAME -# -# DESCRIPTION -#- Compiles layer file of Dojo build output using Python rjsmin. -#+ Compiles layer file of Dojo build output using uglify.js. -# Deletes all other files. -# -# OPTIONS -#@@ -105,7 +105,7 @@ if [[ ! $OUTPUT_FILE ]] ; then -# OUTPUT_FILE=$RDIR/$RELEASE/$LAYER.js -# fi -# -#-# compile using python rjsmin -#+# compile using uglifyjs -# echo "Minimizing: $RDIR/$RELEASE/$LAYER.js" -# echo "Target file: $OUTPUT_FILE" -#-${PYTHON:-python3} -m rjsmin < $RDIR/$RELEASE/$LAYER.js > $OUTPUT_FILE -#+uglifyjs $RDIR/$RELEASE/$LAYER.js > $OUTPUT_FILE -#-- -#2.26.2 - diff --git a/SOURCES/freeipa-4.9.0.tar.gz.asc b/SOURCES/freeipa-4.9.0.tar.gz.asc deleted file mode 100644 index 734a737..0000000 --- a/SOURCES/freeipa-4.9.0.tar.gz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEEhAodHH8+xLL+UwQ1RxniuKu/YhoFAl/jVtoACgkQRxniuKu/ -YhoQHQ//enExZ8mT3peVMynjfWJv4ZhLtqi25NcmAwpiDFYBgVmdtvPZzfUWxHyZ -gAw9KBoRGq/wWazOwdXPIIy4cQ14lZFVTvKHvpPbYjFCgIcil1zd4tiCNdRH2OK4 -JtthLefJZ2s2GnB7XvAczRKhYBrnpiYlyRpAyvWPqFwOTUThoFrA/mL7CLmEL0S6 -ULwyOlXn/l08il8N+Ro2WRWhBMKdJvq4xjLgqqGVFYfecxkN98Ri1YMhiTOho7NR -X+2HXBm0dZgXcPlyYVwf8pRtCKdlo1T4/sj39IBFbUR6jK1/CMnWri+58c6YJ2wq -YfVWq4xwGsIU5DI3bD8ldB6FtQHFYD+cIZTbLK3Ocwj4q2B0TJLJu6Ghi1F2yJaL -zzH9UmOfyUCGQODpFIwEcTr2pRBqilpucx43KCZL8n45fGZhQdRwgsP3yp2p52u4 -X0WL5MAyaGBuIT4AgLG9tLrv2KJJB/OCWBViWfDWcY8Cwed3TmhAbY9EB9ZE0IIc -4FKbCnclUzYK0L3WlXyDYhsHAQu2UYK3qpWOtrDsLznP5AddelDXK8I7nZcluf1H -VAlv8Bh+HnzmFJI5RJg5NIZirXdYwnVQievatKndOUTNILYGhRMJ000a6RZvFM51 -67c9S8b43Nz/fj+qXpZkIuxn7W/bbg1T5oVGXyy7/IJH+8HRN8Q= -=eiV3 ------END PGP SIGNATURE----- diff --git a/SOURCES/freeipa-4.9.2.tar.gz.asc b/SOURCES/freeipa-4.9.2.tar.gz.asc new file mode 100644 index 0000000..b84ced9 --- /dev/null +++ b/SOURCES/freeipa-4.9.2.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEhAodHH8+xLL+UwQ1RxniuKu/YhoFAmAqwW4ACgkQRxniuKu/ +YhoqEw/+J2+fMEF4qYDnb6LPs0h/xbiMU+WG5SI0Ybcy6FUrCp2utFqO6N8r7K3J +k9WTcAXweqwEO5aP1fjvbQiIc55lQgN1rlJc+GtnBbPPKabrJB0xgx2VpP2MI8Jl +JRSAdSNvSghaR1v0MYL3ly7GPRLUrb1+Avln+eJIHRfAuUjf9j4MWh7VNDsSp7pQ +vMqz8OHEvSSRQYGKyJ5vQlcHRQNot2pZoWHVfEcRXMD6qn2N7yUU4o9wNOYvJMw8 +YEyInE24D13UV33F9K5QrLEaJ7lpIwJ9lmhAFuZoDUC81s5aAmLtNzUWcdwlOSzk +tY4T+ucpq+0eH1gUiDm6bME7Uw87nc9KuNS3+Q+P2Y7RdUrrbLj8BIsz30VSk8n1 +rH2DZo/1NOFwQ5qDN92QjTeGotqCjwK/j+uRB12HkRgOHkouoZjqwcYRfdxmBhKd +wk6BdDtvSP4voqqoeuZNCbeOKCYsqE2HlGZE9YiLbBAQs081Ir9Tajpn8sgMVURi +7kQN7Xq9/jEl7sQ14VkRMQP8A+rRkmLM1sW3vqhMFDSOyi+qQNnzAnR28qxDBXC3 +4gG/yFGgqX7mSXsfvTVrjhcVEO6IsqkkPAcFR3Xivpy146LoONSlIGgtA8mGMIeO +Zd3awH4T8kAt3d9RBI+R34sZm//uKQgOKDrAx0VjekFkK0tj2qU= +=XC/f +-----END PGP SIGNATURE----- diff --git a/SPECS/ipa.spec b/SPECS/ipa.spec index dee4d77..99de2e5 100644 --- a/SPECS/ipa.spec +++ b/SPECS/ipa.spec @@ -163,7 +163,7 @@ # Work-around fact that RPM SPEC parser does not accept # "Version: @VERSION@" in freeipa.spec.in used for Autoconf string replacement -%define IPA_VERSION 4.9.0 +%define IPA_VERSION 4.9.2 # Release candidate version -- uncomment with one percent for RC versions #%%global rc_version %%nil %define AT_SIGN @ @@ -176,7 +176,7 @@ Name: %{package_name} Version: %{IPA_VERSION} -Release: 1%{?rc_version:.%rc_version}%{?dist} +Release: 3%{?rc_version:.%rc_version}%{?dist} Summary: The Identity, Policy and Audit system License: GPLv3+ @@ -194,10 +194,20 @@ Source1: https://releases.pagure.org/freeipa/freeipa-%{version}%{?rc_vers # RHEL spec file only: END: Change branding to IPA and Identity Management # RHEL spec file only: START -%if 0%{?rhel} == 8 && %{NON_DEVELOPER_BUILD} +%if %{NON_DEVELOPER_BUILD} +%if 0%{?rhel} >= 8 +Patch0001: 0001-ipatests_libsss_sudo_and_sudo_pagure#8530_rhbz#1932289.patch +Patch0002: 0002-ipatests-error-message-check-in-uninstall-log-for-KR_rhbz#1932289.patch +Patch0003: 0003-ipatests-skip-tests-for-AD-trust-with-shared-secret-_rhbz#1932289.patch +Patch0004: 0004-ipatests-ipa-cert-fix_pagure#8600_rhbz#1932289.patch +Patch0005: 0005-ipatests-test-Samba-mount-with-NTLM-authentication_rhbz#1932289.patch +Patch0006: 0006-ipatests_do_not_ignore_zonemgr_pagure#8718_rhbz#1932289.patch +Patch0007: 0007-ipatests_ipa-cert-fix_renews_pagure#7885_rhbz#1932289.patch +Patch0008: 0008-ipatests-use-whole-date-when-calling-journalctl-sinc_rhbz#1932289.patch +Patch0009: 0009-ipa-kdb-do-not-use-OpenLDAP-functions-with-NULL-LDAP_rhbz#1932784.patch +Patch0010: 0010-ipa-client-install-output-a-warning-if-sudo-is-not-p_rhbz#1939371.patch Patch1001: 1001-Change-branding-to-IPA-and-Identity-Management.patch -Patch1002: 1002-4.8.0-Remove-csrgen.patch -Patch1003: 1003-Revert-WebUI-use-python3-rjsmin-to-minify-JavaScript.patch +%endif %endif # RHEL spec file only: END @@ -331,6 +341,7 @@ BuildRequires: python3-lxml BuildRequires: python3-netaddr >= %{python_netaddr_version} BuildRequires: python3-netifaces BuildRequires: python3-paste +BuildRequires: python3-pexpect BuildRequires: python3-pki >= %{pki_version} BuildRequires: python3-polib BuildRequires: python3-pyasn1 @@ -845,10 +856,13 @@ Requires: python3-ipaserver = %{version}-%{release} Requires: iptables Requires: python3-coverage Requires: python3-cryptography >= 1.6 +Requires: python3-pexpect %if 0%{?fedora} # These packages do not exist on RHEL and for ipatests use # they are installed on the controller through other means Requires: ldns-utils +# update-crypto-policies +Requires: crypto-policies-scripts Requires: python3-polib Requires: python3-pytest >= 3.9.1 Requires: python3-pytest-multihost >= 0.5 @@ -928,7 +942,6 @@ export PATH=/usr/bin:/usr/sbin:$PATH export PYTHON=%{__python3} autoreconf -ivf %configure --with-vendor-suffix=-%{release} \ - --with-ipaplatform=rhel \ %{enable_server_option} \ %{with_ipatests_option} \ %{with_ipa_join_xml_option} \ @@ -1582,17 +1595,6 @@ fi %dir %{python3_sitelib}/ipaclient/remote_plugins/2_* %{python3_sitelib}/ipaclient/remote_plugins/2_*/*.py %{python3_sitelib}/ipaclient/remote_plugins/2_*/__pycache__/*.py* -%if 0%{?rhel} -# RHEL spec file only: DELETED: Remove csrgen -%else -%dir %{python3_sitelib}/ipaclient/csrgen -%dir %{python3_sitelib}/ipaclient/csrgen/profiles -%{python3_sitelib}/ipaclient/csrgen/profiles/*.json -%dir %{python3_sitelib}/ipaclient/csrgen/rules -%{python3_sitelib}/ipaclient/csrgen/rules/*.json -%dir %{python3_sitelib}/ipaclient/csrgen/templates -%{python3_sitelib}/ipaclient/csrgen/templates/*.tmpl -%endif %{python3_sitelib}/ipaclient-*.egg-info @@ -1678,6 +1680,25 @@ fi %changelog +* Fri Mar 19 2021 Thomas Woerner <twoerner@redhat.com> - 4.9.2-3 +- ipa-client-install displays false message + 'sudo binary does not seem to be present on this system' + Resolves: RHBZ#1939371 + +* Thu Mar 4 2021 Thomas Woerner <twoerner@redhat.com> - 4.9.2-2 +- Sync ipatests from upstream to RHEL packages for FreeIPA 4.9 branch + Resolves: RHBZ#1932289 +- Fix krb5kdc is crashing intermittently on IPA server + Resolves: RHBZ#1932784 + +* Mon Feb 15 2021 Alexander Bokovoy <abokovoy@redhat.com> - 4.9.2-1 +- Upstream release FreeIPA 4.9.2 + Related: RHBZ#1891832 + +* Wed Jan 27 2021 Alexander Bokovoy <abokovoy@redhat.com> - 4.9.1-1 +- Upstream release FreeIPA 4.9.1 + Related: RHBZ#1891832 + * Mon Jan 4 2021 Thomas Woerner <twoerner@redhat.com> - 4.9.0-1 - Upstream final release FreeIPA 4.9.0 Related: RHBZ#1891832