From de0b796c1f657f35d74280206376ce456c29edd9 Mon Sep 17 00:00:00 2001 From: Michael Unterkalmsteiner Date: Wed, 21 Feb 2018 17:02:15 +0100 Subject: [PATCH 1/9] Handling the back/forward buttons of browsers in navigation Two main changes: 1) Use always the subscription on the routing events to handle data retrieval, not only when constructing the navigator service. In this way, we load also data when the browser back/forward buttons are used for navigation. 2) In order to keep the navigator service history in sync when the browser back/forward buttons are used, we update the history index. --- .../navigator/services/navigator.service.ts | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts b/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts index d97b98fac..5e74ef0e8 100644 --- a/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts +++ b/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts @@ -5,6 +5,7 @@ import { SpecmateDataService } from '../../../../data/modules/data-service/servi import { LoggingService } from '../../../../views/side/modules/log-list/services/logging.service'; import { Router, ActivatedRoute, NavigationEnd } from '@angular/router'; import { Url } from '../../../../../util/url'; +import { Location } from '@angular/common'; @Injectable() export class NavigatorService { @@ -18,10 +19,15 @@ export class NavigatorService { private dataService: SpecmateDataService, private logger: LoggingService, private router: Router, - private route: ActivatedRoute) { + private route: ActivatedRoute, + private location: Location) { + + this.location.subscribe(pse => { + this.handleBrowserBackForwardButton(decodeURIComponent(pse.url)); + }); let subscription: Subscription = this.router.events.subscribe((event) => { - if (event instanceof NavigationEnd && !this.hasHistory) { + if (event instanceof NavigationEnd) { if (!this.route.snapshot.children[0] || !Url.fromParams(this.route.snapshot.children[0].params)) { return; } @@ -29,9 +35,10 @@ export class NavigatorService { this.dataService.readElement(currentUrl, true) .then((element: IContainer) => { if (element) { - this.current = 0; - this.history[this.current] = element; - subscription.unsubscribe(); + if (!this.hasHistory) { + this.current = 0; + this.history[this.current] = element; + } return Promise.resolve(); } return Promise.reject('Could not load element: ' + currentUrl); @@ -83,10 +90,20 @@ export class NavigatorService { return Promise.resolve(); } return Promise.reject('Navigation was not performed'); - }) - .then(() => this.dataService.readContents(this.currentElement.url, true)) - .then((contents: IContainer[]) => this._currentContents = contents) - .then(() => this.hasNavigated.emit(this.currentElement)); + }); + } + + private handleBrowserBackForwardButton(navigatedTo: String): void { + let previous: IContainer = this.previousElement; + let next: IContainer = this.nextElement; + + if (previous && navigatedTo.includes(previous.url)) { + this.current -= 1; + } else if (next && navigatedTo.includes(next.url)) { + this.current += 1; + } + + // Do we need here also to perform discardChanges() and clearCommits() as in performNavigation? } public get currentElement(): IContainer { From f7a4cd60ed6834865245321b78a01b1875703fda Mon Sep 17 00:00:00 2001 From: Michael Unterkalmsteiner Date: Sat, 24 Feb 2018 19:08:59 +0100 Subject: [PATCH 2/9] Refactored integration tests and added history tests --- bundles/specmate-integration-test/bnd.bnd | 5 +- .../specmate/test/integration/CrudTest.java | 350 +++++++++++ .../test/integration/EmfRestTest.java | 587 ++---------------- .../test/integration/HistoryTest.java | 185 ++++++ .../specmate/test/integration/SearchTest.java | 152 +++++ 5 files changed, 759 insertions(+), 520 deletions(-) create mode 100644 bundles/specmate-integration-test/src/com/specmate/test/integration/CrudTest.java create mode 100644 bundles/specmate-integration-test/src/com/specmate/test/integration/HistoryTest.java create mode 100644 bundles/specmate-integration-test/src/com/specmate/test/integration/SearchTest.java diff --git a/bundles/specmate-integration-test/bnd.bnd b/bundles/specmate-integration-test/bnd.bnd index 6c943ba08..24072b6b5 100644 --- a/bundles/specmate-integration-test/bnd.bnd +++ b/bundles/specmate-integration-test/bnd.bnd @@ -1,4 +1,7 @@ -Test-Cases: com.specmate.test.integration.EmfRestTest +Test-Cases: \ + com.specmate.test.integration.CrudTest,\ + com.specmate.test.integration.SearchTest,\ + com.specmate.test.integration.HistoryTest -buildpath: \ biz.aQute.launcher,\ specmate-persistency-api;version=latest,\ diff --git a/bundles/specmate-integration-test/src/com/specmate/test/integration/CrudTest.java b/bundles/specmate-integration-test/src/com/specmate/test/integration/CrudTest.java new file mode 100644 index 000000000..a656fa54d --- /dev/null +++ b/bundles/specmate-integration-test/src/com/specmate/test/integration/CrudTest.java @@ -0,0 +1,350 @@ +package com.specmate.test.integration; + +import javax.ws.rs.core.Response.Status; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.osgi.service.log.LogService; + +import com.specmate.common.RestResult; +import com.specmate.common.SpecmateException; +import com.specmate.model.base.BasePackage; + +public class CrudTest extends EmfRestTest { + + public CrudTest() throws Exception {} + + @Before + public void clear() throws SpecmateException { + clearPersistency(); + } + + /** + * Tests posting a folder to the root. Checks, if the return code of the + * post request is OK and if retrieving the object again returns the + * original object. + */ + @Test + public void testPostFolderToRootAndRetrieve() { + String postUrl = listUrl(); + JSONObject folder = createTestFolder(); + logService.log(LogService.LOG_DEBUG, "Posting the object " + folder.toString() + " to url " + postUrl); + RestResult result = restClient.post(postUrl, folder); + Assert.assertEquals(result.getResponse().getStatus(), Status.OK.getStatusCode()); + + String retrieveUrl = detailUrl(getId(folder)); + RestResult getResult = restClient.get(retrieveUrl); + JSONObject retrievedFolder = getResult.getPayload(); + logService.log(LogService.LOG_DEBUG, + "Retrieved the object " + retrievedFolder.toString() + " from url " + retrieveUrl); + Assert.assertTrue(EmfRestTestUtil.compare(folder, retrievedFolder, true)); + } + + /** + * Tests posting a folder that contains special characters in its name. + * Checks, if the return code of the post request is OK and if retrieving + * the object again returns the original object. + */ + @Test + public void testPostFolderWithSpecialChars() { + String postUrl = listUrl(); + JSONObject folder = createTestFolder("TestFolder", "äöüߧ$% &=?!/\\^_:.,#'+~*(){}[]"); + logService.log(LogService.LOG_DEBUG, "Posting the object " + folder.toString() + " to url " + postUrl); + RestResult result = restClient.post(postUrl, folder); + Assert.assertEquals(result.getResponse().getStatus(), Status.OK.getStatusCode()); + + String retrieveUrl = detailUrl(getId(folder)); + RestResult getResult = restClient.get(retrieveUrl); + JSONObject retrievedFolder = getResult.getPayload(); + logService.log(LogService.LOG_DEBUG, + "Retrieved the object " + retrievedFolder.toString() + " from url " + retrieveUrl); + Assert.assertTrue(EmfRestTestUtil.compare(folder, retrievedFolder, true)); + } + + /** + * Tests posting a folder to another folder. Checks, if the return code of + * the post request is OK and if retrieving the object again returns the + * original object. + */ + @Test + public void testPostFolderToFolderAndRetrieve() { + JSONObject folder = postFolderToRoot(); + String folderName = getId(folder); + + String postUrl2 = listUrl(folderName); + JSONObject folder2 = createTestFolder(); + String folderName2 = getId(folder2); + logService.log(LogService.LOG_DEBUG, "Posting the object " + folder2.toString() + " to url " + postUrl2); + RestResult result2 = restClient.post(postUrl2, folder2); + Assert.assertEquals(result2.getResponse().getStatus(), Status.OK.getStatusCode()); + + String retrieveUrl = detailUrl(folderName, folderName2); + RestResult getResult = restClient.get(retrieveUrl); + JSONObject retrievedFolder = getResult.getPayload(); + logService.log(LogService.LOG_DEBUG, + "Retrieved the object " + retrievedFolder.toString() + " from url " + retrieveUrl); + Assert.assertTrue(EmfRestTestUtil.compare(retrievedFolder, folder2, true)); + } + + /** Tests if retrieving a non-existing object returns 404-Not found */ + @Test + public void testMissingFolder() { + // Create new folder just to get a fresh name + JSONObject folder = createTestFolder(); + String folderName = getId(folder); + + // Not posting to backend instead try to retrieve + String retrieveUrl = detailUrl(folderName); + RestResult getResult = restClient.get(retrieveUrl); + + Assert.assertEquals(Status.NOT_FOUND.getStatusCode(), getResult.getResponse().getStatus()); + + } + + /** Tests retrieving a list of child folders from a folder */ + @Test + public void testRetrieveChildrenList() { + int numberOfChildren = 2; + + JSONObject folder = postFolderToRoot(); + String folderName = getId(folder); + + String postUrl2 = listUrl(folderName); + JSONObject[] folders = new JSONObject[2]; + for (int i = 0; i < numberOfChildren; i++) { + folders[i] = createTestFolder(); + logService.log(LogService.LOG_DEBUG, "Posting the object " + folders[i].toString() + " to url " + postUrl2); + RestResult result2 = restClient.post(postUrl2, folders[i]); + Assert.assertEquals(result2.getResponse().getStatus(), Status.OK.getStatusCode()); + } + + RestResult listResult = restClient.getList(postUrl2); + JSONArray childrenList = listResult.getPayload(); + logService.log(LogService.LOG_DEBUG, "Retrieved the list " + childrenList.toString() + " from url " + postUrl2); + Assert.assertEquals(2, childrenList.length()); + for (int i = 0; i < numberOfChildren; i++) { + Assert.assertTrue(EmfRestTestUtil.compare(folders[i], childrenList.getJSONObject(i), true)); + } + + } + + /** Tests if an empty folder can be deleted */ + @Test + public void testDeleteEmptyFolder() { + JSONObject folder = postFolderToRoot(); + String folderName = getId(folder); + getObject(folderName); + + deleteObject(folderName); + + // Check if folder still exists + getObject(Status.NOT_FOUND.getStatusCode(), folderName); + } + + /** Tests if a non-empty folder can be deleted */ + @Test + public void testDeleteNonEmptyFolder() { + // Post folder to root + JSONObject outerFolder = postFolderToRoot(); + String folderName = getId(outerFolder); + + // Post folder in new folder + postFolder(folderName); + + // Check if top level folder exists + getObject(folderName); + + // Delete top level folder + deleteObject(folderName); + + // Check if top level folder still exists + getObject(Status.NOT_FOUND.getStatusCode(), folderName); + } + + /** + * Tests posting a requirement to a folder. Checks, if the return code of + * the post request is OK and if retrieving the requirement again returns + * the original object. + */ + @Test + public void testPostRequirementToFolderAndRetrieve() { + JSONObject folder = postFolderToRoot(); + String folderName = getId(folder); + + JSONObject requirement = postRequirement(folderName); + String requirementName = getId(requirement); + + getObject(folderName, requirementName); + } + + @Test + public void testUpdateFolder() { + JSONObject folder = postFolderToRoot(); + String folderName = getId(folder); + + folder.put(BasePackage.Literals.INAMED__NAME.getName(), "New Name"); + updateObject(folder, folderName); + + JSONObject retrievedFolder = getObject(folderName); + Assert.assertTrue(EmfRestTestUtil.compare(folder, retrievedFolder, true)); + } + + @Test + public void testPostCEGToRequirement() { + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + + JSONObject cegModel = postCEG(requirementId); + String cegId = getId(cegModel); + + JSONObject retrievedCEG = getObject(requirementId, cegId); + Assert.assertTrue(EmfRestTestUtil.compare(retrievedCEG, cegModel, true)); + } + + @Test + public void testPostCEGNodesAndConnectionToCEG() { + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + + // post ceg + JSONObject cegModel = postCEG(requirementId); + String cegId = getId(cegModel); + + // post node 1 + JSONObject cegNode1 = postCEGNode(requirementId, cegId); + String node1Id = getId(cegNode1); + + JSONObject retrievedCegNode1 = getObject(requirementId, cegId, node1Id); + Assert.assertTrue(EmfRestTestUtil.compare(cegNode1, retrievedCegNode1, true)); + + // post node 2 + JSONObject cegNode2 = postCEGNode(requirementId, cegId); + String node2Id = getId(cegNode2); + + JSONObject retrievedCegNode2 = getObject(requirementId, cegId, node2Id); + Assert.assertTrue(EmfRestTestUtil.compare(cegNode2, retrievedCegNode2, true)); + + // post connection + JSONObject connection = postCEGConnection(retrievedCegNode1, retrievedCegNode2, requirementId, cegId); + String connectionId = getId(connection); + + JSONObject retrievedConnection = getObject(requirementId, cegId, connectionId); + Assert.assertTrue(EmfRestTestUtil.compare(retrievedConnection, connection, true)); + } + + @Test + public void testPostFolderWithNoId() { + JSONObject folder = createTestFolder(); + folder.remove(ID_KEY); + + postObject(Status.BAD_REQUEST.getStatusCode(), folder); + } + + @Test + public void testPostFolderWithDuplicateId() { + JSONObject folder = postFolderToRoot(); + postObject(Status.BAD_REQUEST.getStatusCode(), folder); + } + + @Test + public void testPostFolderWithIllegalId() { + JSONObject folder = createTestFolder(); + folder.put(ID_KEY, "id with spaces"); + postObject(Status.BAD_REQUEST.getStatusCode(), folder); + } + + @Test + public void testPostTestSpecification() { + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + + // Post ceg model + JSONObject cegModel = postCEG(requirementId); + String cegId = getId(cegModel); + + // Post test specification + JSONObject testSpecification = postTestSpecification(requirementId, cegId); + String testSpecId = getId(testSpecification); + + JSONObject retrievedTestSpecification = getObject(requirementId, cegId, testSpecId); + Assert.assertTrue(EmfRestTestUtil.compare(retrievedTestSpecification, testSpecification, true)); + } + + @Test + public void testGenerateTests() { + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + + // Post ceg model + JSONObject cegModel = postCEG(requirementId); + String cegId = getId(cegModel); + + // post node 1 + JSONObject cegNode1 = postCEGNode(requirementId, cegId); + String cegNode1Id = getId(cegNode1); + JSONObject retrievedCegNode1 = getObject(requirementId, cegId, cegNode1Id); + + // post node 2 + JSONObject cegNode2 = postCEGNode(requirementId, cegId); + String cegNode2Id = getId(cegNode2); + JSONObject retrievedCegNode2 = getObject(requirementId, cegId, cegNode2Id); + + // post connection + postCEGConnection(retrievedCegNode1, retrievedCegNode2, requirementId, cegId); + + // Post test specification + JSONObject testSpec = postTestSpecification(requirementId, cegId); + String testSpecId = getId(testSpec); + + // Generate test cases + String generateUrl = buildUrl("generateTests", requirementId, cegId, testSpecId); + logService.log(LogService.LOG_DEBUG, "Request test genreation at url " + generateUrl); + RestResult result = restClient.post(generateUrl, null); + Assert.assertEquals(Status.NO_CONTENT.getStatusCode(), result.getResponse().getStatus()); + + String retrieveUrl = listUrl(requirementId, cegId, testSpecId); + RestResult getResult = restClient.getList(retrieveUrl); + JSONArray retrievedTestChilds = getResult.getPayload(); + logService.log(LogService.LOG_DEBUG, + "Retrieved the object " + retrievedTestChilds.toString() + " from url " + retrieveUrl); + + // Expect 4 children: two test cases and two test parameters + Assert.assertEquals(4, retrievedTestChilds.length()); + } + + /** + * Posts two test specifications to a CEG model and checks if they are + * retrieved by the list recursive service. + */ + @Test + public void testGetListRecursive() { + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + + // Post ceg model + JSONObject cegModel = postCEG(requirementId); + String cegId = getId(cegModel); + + // Post test specification + JSONObject testSpecification = postTestSpecification(requirementId, cegId); + + // Post second test specification + JSONObject testSpecification2 = postTestSpecification(requirementId, cegId); + + // Perform recursive list call + String listUrl = buildUrl("listRecursive", requirementId); + RestResult listResult = restClient.getList(listUrl, "class", "TestSpecification"); + Assert.assertEquals(Status.OK.getStatusCode(), listResult.getResponse().getStatus()); + JSONArray retrievedTestSpecifications = listResult.getPayload(); + logService.log(LogService.LOG_DEBUG, + "Retrieved the object " + retrievedTestSpecifications.toString() + " from url " + listUrl); + Assert.assertEquals(2, retrievedTestSpecifications.length()); + Assert.assertTrue( + EmfRestTestUtil.compare(retrievedTestSpecifications.getJSONObject(0), testSpecification, true)); + Assert.assertTrue( + EmfRestTestUtil.compare(retrievedTestSpecifications.getJSONObject(1), testSpecification2, true)); + } +} diff --git a/bundles/specmate-integration-test/src/com/specmate/test/integration/EmfRestTest.java b/bundles/specmate-integration-test/src/com/specmate/test/integration/EmfRestTest.java index 67375c8c4..391cfe336 100644 --- a/bundles/specmate-integration-test/src/com/specmate/test/integration/EmfRestTest.java +++ b/bundles/specmate-integration-test/src/com/specmate/test/integration/EmfRestTest.java @@ -2,12 +2,8 @@ import javax.ws.rs.core.Response.Status; -import org.json.JSONArray; import org.json.JSONObject; import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.service.log.LogService; @@ -24,50 +20,41 @@ import com.specmate.persistency.IPersistencyService; import com.specmate.persistency.ITransaction; import com.specmate.persistency.IView; -import com.specmate.search.api.IModelSearchService; -public class EmfRestTest { - - private static final String ID_KEY = "id"; - private static final String NSURI_KEY = EMFJsonSerializer.KEY_NSURI; - private static final String ECLASS = EMFJsonSerializer.KEY_ECLASS; - private static BundleContext context; - private static IPersistencyService persistency; - private static IModelSearchService searchService; - - protected static IView view; - - protected static int counter = 0; - protected static LogService logService; - private static RestClient restClient; - - @BeforeClass - public static void init() throws Exception { - context = FrameworkUtil.getBundle(EmfRestTest.class).getBundleContext(); - persistency = getPersistencyService(); - searchService = getSearchService(); - view = persistency.openView(); - logService = getLogger(); - restClient = new RestClient("http://localhost:8088/services/rest", logService); +public abstract class EmfRestTest { + static final String ID_KEY = "id"; + static final String REST_ENDPOINT = "http://localhost:8088/services/rest"; + static final String NSURI_KEY = EMFJsonSerializer.KEY_NSURI; + static final String ECLASS = EMFJsonSerializer.KEY_ECLASS; + static BundleContext context; + static IPersistencyService persistency; + static IView view; + static LogService logService; + static RestClient restClient; + private static int counter = 0; + + public EmfRestTest() throws Exception { + if(context == null) { + context = FrameworkUtil.getBundle(EmfRestTest.class).getBundleContext(); + } + if(persistency == null) { + persistency = getPersistencyService(); + } + if(view == null) { + view = persistency.openView(); + } + if(logService == null) { + logService = getLogger(); + } + if(restClient == null) { + restClient = new RestClient(REST_ENDPOINT, logService); + } + Thread.sleep(2000); - } - - private static IModelSearchService getSearchService() throws InterruptedException { - ServiceTracker searchServiceTracker = new ServiceTracker<>(context, - IModelSearchService.class.getName(), null); - searchServiceTracker.open(); - IModelSearchService searchService = searchServiceTracker.waitForService(100000); - Assert.assertNotNull(searchService); - return searchService; - } - - @Before - public void clear() throws SpecmateException { clearPersistency(); - searchService.clear(); } - private static LogService getLogger() throws InterruptedException { + private LogService getLogger() throws InterruptedException { ServiceTracker logTracker = new ServiceTracker<>(context, LogService.class.getName(), null); logTracker.open(); @@ -76,13 +63,13 @@ private static LogService getLogger() throws InterruptedException { return logService; } - private static void clearPersistency() throws SpecmateException { + protected void clearPersistency() throws SpecmateException { ITransaction transaction = persistency.openTransaction(); transaction.getResource().getContents().clear(); transaction.commit(); } - private static IPersistencyService getPersistencyService() throws InterruptedException, SpecmateException { + private IPersistencyService getPersistencyService() throws InterruptedException, SpecmateException { ServiceTracker persistencyTracker = new ServiceTracker<>(context, IPersistencyService.class.getName(), null); persistencyTracker.open(); @@ -91,7 +78,7 @@ private static IPersistencyService getPersistencyService() throws InterruptedExc return persistency; } - private JSONObject createTestFolder(String folderId, String folderName) { + protected JSONObject createTestFolder(String folderId, String folderName) { JSONObject folder = new JSONObject(); folder.put(NSURI_KEY, BasePackage.eNS_URI); folder.put(ECLASS, BasePackage.Literals.FOLDER.getName()); @@ -100,12 +87,12 @@ private JSONObject createTestFolder(String folderId, String folderName) { return folder; } - private JSONObject createTestFolder() { + protected JSONObject createTestFolder() { String folderName = "TestFolder" + counter++; return createTestFolder(folderName, folderName); } - private JSONObject createTestRequirement() { + protected JSONObject createTestRequirement() { String requirementsName = "TestRequirement" + counter++; JSONObject requirement = new JSONObject(); requirement.put(NSURI_KEY, RequirementsPackage.eNS_URI); @@ -127,7 +114,7 @@ private JSONObject createTestRequirement() { return requirement; } - private JSONObject createTestCegModel() { + protected JSONObject createTestCegModel() { String cegName = "TestCeg" + counter++; JSONObject ceg = new JSONObject(); ceg.put(NSURI_KEY, RequirementsPackage.eNS_URI); @@ -137,7 +124,7 @@ private JSONObject createTestCegModel() { return ceg; } - private JSONObject createTestCegNode() { + protected JSONObject createTestCegNode() { String cegName = "TestCegNode" + counter++; JSONObject cegNode = new JSONObject(); cegNode.put(NSURI_KEY, RequirementsPackage.eNS_URI); @@ -150,7 +137,7 @@ private JSONObject createTestCegNode() { return cegNode; } - private JSONObject createTestConnection(JSONObject node1, JSONObject node2) { + protected JSONObject createTestConnection(JSONObject node1, JSONObject node2) { String connectionName = "TestConnection" + counter++; JSONObject connection = new JSONObject(); connection.put(NSURI_KEY, RequirementsPackage.eNS_URI); @@ -162,7 +149,7 @@ private JSONObject createTestConnection(JSONObject node1, JSONObject node2) { return connection; } - private JSONObject createTestTestSpecification() { + protected JSONObject createTestTestSpecification() { String testSpecName = "TestSpecification" + counter++; JSONObject testSpecification = new JSONObject(); testSpecification.put(NSURI_KEY, TestspecificationPackage.eNS_URI); @@ -172,7 +159,7 @@ private JSONObject createTestTestSpecification() { return testSpecification; } - private String buildUrl(String service, String... segments) { + protected String buildUrl(String service, String... segments) { StringBuilder builder = new StringBuilder(); for (String segment : segments) { builder.append("/").append(segment); @@ -180,85 +167,69 @@ private String buildUrl(String service, String... segments) { return builder.toString() + "/" + service; } - private String detailUrl(String... segments) { - return buildUrl("details", segments); - } - - private String listUrl(String... segments) { - return buildUrl("list", segments); - } - - private String deleteUrl(String... segments) { - return buildUrl("delete", segments); - } - - private String getId(JSONObject requirement) { + protected String getId(JSONObject requirement) { return requirement.getString(ID_KEY); } - private JSONObject postFolderToRoot() { + protected JSONObject postFolderToRoot() { JSONObject folder = createTestFolder(); return postObject(folder); } - private JSONObject postFolder(String... segments) { + protected JSONObject postFolder(String... segments) { JSONObject folder = createTestFolder(); return postObject(folder, segments); } - private JSONObject postRequirementToRoot() { + protected JSONObject postRequirementToRoot() { return postRequirement(); } - private JSONObject postRequirement(String... segments) { + protected JSONObject postRequirement(String... segments) { JSONObject requirement = createTestRequirement(); return postObject(requirement, segments); } - private JSONObject postCEG(String... segments) { + protected JSONObject postCEG(String... segments) { JSONObject cegModel = createTestCegModel(); return postObject(cegModel, segments); } - private JSONObject postCEGNode(String... segments) { + protected JSONObject postCEGNode(String... segments) { JSONObject cegNode = createTestCegNode(); return postObject(cegNode, segments); } - private JSONObject postCEGConnection(JSONObject node1, JSONObject node2, String... segments) { + protected JSONObject postCEGConnection(JSONObject node1, JSONObject node2, String... segments) { JSONObject cegConnection = createTestConnection(node1, node2); return postObject(cegConnection, segments); } - private JSONObject postTestSpecification(String... segments) { + protected JSONObject postTestSpecification(String... segments) { JSONObject testSpecification = createTestTestSpecification(); return postObject(testSpecification, segments); } - private JSONObject postObject(JSONObject object, String... segments) { + protected JSONObject postObject(JSONObject object, String... segments) { return postObject(Status.OK.getStatusCode(), object, segments); } - private JSONObject postObject(int statusCode, JSONObject object, String... segments) { + protected JSONObject postObject(int statusCode, JSONObject object, String... segments) { String postUrl = listUrl(segments); logService.log(LogService.LOG_DEBUG, "Posting the object " + object.toString() + " to url " + postUrl); RestResult result = restClient.post(postUrl, object); Assert.assertEquals(result.getResponse().getStatus(), statusCode); return object; } - - private void updateObject(JSONObject object, String segments) { + + protected void updateObject(JSONObject object, String... segments) { String updateUrl = detailUrl(segments); logService.log(LogService.LOG_DEBUG, "Updateing the object " + object.toString() + " at url " + updateUrl); RestResult putResult = restClient.put(updateUrl, object); Assert.assertEquals(Status.OK.getStatusCode(), putResult.getResponse().getStatus()); } - - private JSONObject getObject(String... segments) { - return getObject(Status.OK.getStatusCode(), segments); - } - - private JSONObject getObject(int statusCode, String... segments) { + + protected JSONObject getObject(int statusCode, String... segments) { String retrieveUrl = detailUrl(segments); RestResult getResult = restClient.get(retrieveUrl); JSONObject retrievedObject = getResult.getPayload(); @@ -271,450 +242,28 @@ private JSONObject getObject(int statusCode, String... segments) { Assert.assertEquals(statusCode, getResult.getResponse().getStatus()); return retrievedObject; } + + protected JSONObject getObject(String... segments) { + return getObject(Status.OK.getStatusCode(), segments); + } - private void deleteObject(String... segments) { + protected void deleteObject(String... segments) { // Delete folder String deleteUrl = deleteUrl(segments); logService.log(LogService.LOG_DEBUG, "Deleting object with URL " + deleteUrl); RestResult deleteResult = restClient.delete(deleteUrl); Assert.assertEquals(Status.OK.getStatusCode(), deleteResult.getResponse().getStatus()); } - - private JSONArray performSearch(String query) { - String searchUrl = buildUrl("search"); - RestResult result = restClient.getList(searchUrl, "query", query); - Assert.assertEquals(Status.OK.getStatusCode(), result.getResponse().getStatus()); - JSONArray foundObjects = result.getPayload(); - return foundObjects; - } - - /** - * Tests posting a folder to the root. Checks, if the return code of the - * post request is OK and if retrieving the object again returns the - * original object. - */ - @Test - public void testPostFolderToRootAndRetrieve() { - String postUrl = listUrl(); - JSONObject folder = createTestFolder(); - logService.log(LogService.LOG_DEBUG, "Posting the object " + folder.toString() + " to url " + postUrl); - RestResult result = restClient.post(postUrl, folder); - Assert.assertEquals(result.getResponse().getStatus(), Status.OK.getStatusCode()); - - String retrieveUrl = detailUrl(getId(folder)); - RestResult getResult = restClient.get(retrieveUrl); - JSONObject retrievedFolder = getResult.getPayload(); - logService.log(LogService.LOG_DEBUG, - "Retrieved the object " + retrievedFolder.toString() + " from url " + retrieveUrl); - Assert.assertTrue(EmfRestTestUtil.compare(folder, retrievedFolder, true)); - } - - /** - * Tests posting a folder that contains special characters in its name. - * Checks, if the return code of the post request is OK and if retrieving - * the object again returns the original object. - */ - @Test - public void testPostFolderWithSpecialChars() { - String postUrl = listUrl(); - JSONObject folder = createTestFolder("TestFolder", "äöüߧ$% &=?!/\\^_:.,#'+~*(){}[]"); - logService.log(LogService.LOG_DEBUG, "Posting the object " + folder.toString() + " to url " + postUrl); - RestResult result = restClient.post(postUrl, folder); - Assert.assertEquals(result.getResponse().getStatus(), Status.OK.getStatusCode()); - - String retrieveUrl = detailUrl(getId(folder)); - RestResult getResult = restClient.get(retrieveUrl); - JSONObject retrievedFolder = getResult.getPayload(); - logService.log(LogService.LOG_DEBUG, - "Retrieved the object " + retrievedFolder.toString() + " from url " + retrieveUrl); - Assert.assertTrue(EmfRestTestUtil.compare(folder, retrievedFolder, true)); - } - - /** - * Tests posting a folder to another folder. Checks, if the return code of - * the post request is OK and if retrieving the object again returns the - * original object. - */ - @Test - public void testPostFolderToFolderAndRetrieve() { - JSONObject folder = postFolderToRoot(); - String folderName = getId(folder); - - String postUrl2 = listUrl(folderName); - JSONObject folder2 = createTestFolder(); - String folderName2 = getId(folder2); - logService.log(LogService.LOG_DEBUG, "Posting the object " + folder2.toString() + " to url " + postUrl2); - RestResult result2 = restClient.post(postUrl2, folder2); - Assert.assertEquals(result2.getResponse().getStatus(), Status.OK.getStatusCode()); - - String retrieveUrl = detailUrl(folderName, folderName2); - RestResult getResult = restClient.get(retrieveUrl); - JSONObject retrievedFolder = getResult.getPayload(); - logService.log(LogService.LOG_DEBUG, - "Retrieved the object " + retrievedFolder.toString() + " from url " + retrieveUrl); - Assert.assertTrue(EmfRestTestUtil.compare(retrievedFolder, folder2, true)); - } - - /** Tests if retrieving a non-existing object returns 404-Not found */ - @Test - public void testMissingFolder() { - // Create new folder just to get a fresh name - JSONObject folder = createTestFolder(); - String folderName = getId(folder); - - // Not posting to backend instead try to retrieve - String retrieveUrl = detailUrl(folderName); - RestResult getResult = restClient.get(retrieveUrl); - - Assert.assertEquals(Status.NOT_FOUND.getStatusCode(), getResult.getResponse().getStatus()); - - } - - /** Tests retrieving a list of child folders from a folder */ - @Test - public void testRetrieveChildrenList() { - int numberOfChildren = 2; - - JSONObject folder = postFolderToRoot(); - String folderName = getId(folder); - - String postUrl2 = listUrl(folderName); - JSONObject[] folders = new JSONObject[2]; - for (int i = 0; i < numberOfChildren; i++) { - folders[i] = createTestFolder(); - logService.log(LogService.LOG_DEBUG, "Posting the object " + folders[i].toString() + " to url " + postUrl2); - RestResult result2 = restClient.post(postUrl2, folders[i]); - Assert.assertEquals(result2.getResponse().getStatus(), Status.OK.getStatusCode()); - } - - RestResult listResult = restClient.getList(postUrl2); - JSONArray childrenList = listResult.getPayload(); - logService.log(LogService.LOG_DEBUG, "Retrieved the list " + childrenList.toString() + " from url " + postUrl2); - Assert.assertEquals(2, childrenList.length()); - for (int i = 0; i < numberOfChildren; i++) { - Assert.assertTrue(EmfRestTestUtil.compare(folders[i], childrenList.getJSONObject(i), true)); - } - - } - - /** Tests if an empty folder can be deleted */ - @Test - public void testDeleteEmptyFolder() { - JSONObject folder = postFolderToRoot(); - String folderName = getId(folder); - getObject(folderName); - - deleteObject(folderName); - - // Check if folder still exists - getObject(Status.NOT_FOUND.getStatusCode(), folderName); - } - - /** Tests if a non-empty folder can be deleted */ - @Test - public void testDeleteNonEmptyFolder() { - // Post folder to root - JSONObject outerFolder = postFolderToRoot(); - String folderName = getId(outerFolder); - - // Post folder in new folder - postFolder(folderName); - - // Check if top level folder exists - getObject(folderName); - - // Delete top level folder - deleteObject(folderName); - - // Check if top level folder still exists - getObject(Status.NOT_FOUND.getStatusCode(), folderName); - } - - /** - * Tests posting a requirement to a folder. Checks, if the return code of - * the post request is OK and if retrieving the requirement again returns - * the original object. - */ - @Test - public void testPostRequirementToFolderAndRetrieve() { - JSONObject folder = postFolderToRoot(); - String folderName = getId(folder); - - JSONObject requirement = postRequirement(folderName); - String requirementName = getId(requirement); - - getObject(folderName, requirementName); - } - - @Test - public void testUpdateFolder() { - JSONObject folder = postFolderToRoot(); - String folderName = getId(folder); - - folder.put(BasePackage.Literals.INAMED__NAME.getName(), "New Name"); - updateObject(folder, folderName); - - JSONObject retrievedFolder = getObject(folderName); - Assert.assertTrue(EmfRestTestUtil.compare(folder, retrievedFolder, true)); - } - - @Test - public void testPostCEGToRequirement() { - JSONObject requirement = postRequirementToRoot(); - String requirementId = getId(requirement); - - JSONObject cegModel = postCEG(requirementId); - String cegId = getId(cegModel); - - JSONObject retrievedCEG = getObject(requirementId, cegId); - Assert.assertTrue(EmfRestTestUtil.compare(retrievedCEG, cegModel, true)); - } - - @Test - public void testPostCEGNodesAndConnectionToCEG() { - JSONObject requirement = postRequirementToRoot(); - String requirementId = getId(requirement); - - // post ceg - JSONObject cegModel = postCEG(requirementId); - String cegId = getId(cegModel); - - // post node 1 - JSONObject cegNode1 = postCEGNode(requirementId, cegId); - String node1Id = getId(cegNode1); - - JSONObject retrievedCegNode1 = getObject(requirementId, cegId, node1Id); - Assert.assertTrue(EmfRestTestUtil.compare(cegNode1, retrievedCegNode1, true)); - - // post node 2 - JSONObject cegNode2 = postCEGNode(requirementId, cegId); - String node2Id = getId(cegNode2); - - JSONObject retrievedCegNode2 = getObject(requirementId, cegId, node2Id); - Assert.assertTrue(EmfRestTestUtil.compare(cegNode2, retrievedCegNode2, true)); - - // post connection - JSONObject connection = postCEGConnection(retrievedCegNode1, retrievedCegNode2, requirementId, cegId); - String connectionId = getId(connection); - - JSONObject retrievedConnection = getObject(requirementId, cegId, connectionId); - Assert.assertTrue(EmfRestTestUtil.compare(retrievedConnection, connection, true)); - } - - @Test - public void testPostFolderWithNoId() { - JSONObject folder = createTestFolder(); - folder.remove(ID_KEY); - - postObject(Status.BAD_REQUEST.getStatusCode(), folder); - } - - @Test - public void testPostFolderWithDuplicateId() { - JSONObject folder = postFolderToRoot(); - postObject(Status.BAD_REQUEST.getStatusCode(), folder); - } - - @Test - public void testPostFolderWithIllegalId() { - JSONObject folder = createTestFolder(); - folder.put(ID_KEY, "id with spaces"); - postObject(Status.BAD_REQUEST.getStatusCode(), folder); - } - - @Test - public void testPostTestSpecification() { - JSONObject requirement = postRequirementToRoot(); - String requirementId = getId(requirement); - - // Post ceg model - JSONObject cegModel = postCEG(requirementId); - String cegId = getId(cegModel); - - // Post test specification - JSONObject testSpecification = postTestSpecification(requirementId, cegId); - String testSpecId = getId(testSpecification); - - JSONObject retrievedTestSpecification = getObject(requirementId, cegId, testSpecId); - Assert.assertTrue(EmfRestTestUtil.compare(retrievedTestSpecification, testSpecification, true)); - } - - @Test - public void testGenerateTests() { - JSONObject requirement = postRequirementToRoot(); - String requirementId = getId(requirement); - - // Post ceg model - JSONObject cegModel = postCEG(requirementId); - String cegId = getId(cegModel); - - // post node 1 - JSONObject cegNode1 = postCEGNode(requirementId, cegId); - String cegNode1Id = getId(cegNode1); - JSONObject retrievedCegNode1 = getObject(requirementId, cegId, cegNode1Id); - - // post node 2 - JSONObject cegNode2 = postCEGNode(requirementId, cegId); - String cegNode2Id = getId(cegNode2); - JSONObject retrievedCegNode2 = getObject(requirementId, cegId, cegNode2Id); - - // post connection - postCEGConnection(retrievedCegNode1, retrievedCegNode2, requirementId, cegId); - - // Post test specification - JSONObject testSpec = postTestSpecification(requirementId, cegId); - String testSpecId = getId(testSpec); - - // Generate test cases - String generateUrl = buildUrl("generateTests", requirementId, cegId, testSpecId); - logService.log(LogService.LOG_DEBUG, "Request test genreation at url " + generateUrl); - RestResult result = restClient.post(generateUrl, null); - Assert.assertEquals(Status.NO_CONTENT.getStatusCode(), result.getResponse().getStatus()); - - String retrieveUrl = listUrl(requirementId, cegId, testSpecId); - RestResult getResult = restClient.getList(retrieveUrl); - JSONArray retrievedTestChilds = getResult.getPayload(); - logService.log(LogService.LOG_DEBUG, - "Retrieved the object " + retrievedTestChilds.toString() + " from url " + retrieveUrl); - - // Expect 4 chidren: two test cases and two test parameters - Assert.assertEquals(4, retrievedTestChilds.length()); + + protected String listUrl(String... segments) { + return buildUrl("list", segments); } - - /** - * Posts two test specifications to a CEG model and checks if they are - * retrieved by the list recursive service. - */ - @Test - public void testGetListRecursive() { - JSONObject requirement = postRequirementToRoot(); - String requirementId = getId(requirement); - - // Post ceg model - JSONObject cegModel = postCEG(requirementId); - String cegId = getId(cegModel); - - // Post test specification - JSONObject testSpecification = postTestSpecification(requirementId, cegId); - - // Post second test specification - JSONObject testSpecification2 = postTestSpecification(requirementId, cegId); - - // Peform recursive list call - String listUrl = buildUrl("listRecursive", requirementId); - RestResult listResult = restClient.getList(listUrl, "class", "TestSpecification"); - Assert.assertEquals(Status.OK.getStatusCode(), listResult.getResponse().getStatus()); - JSONArray retrievedTestSpecifications = listResult.getPayload(); - logService.log(LogService.LOG_DEBUG, - "Retrieved the object " + retrievedTestSpecifications.toString() + " from url " + listUrl); - Assert.assertEquals(2, retrievedTestSpecifications.length()); - Assert.assertTrue( - EmfRestTestUtil.compare(retrievedTestSpecifications.getJSONObject(0), testSpecification, true)); - Assert.assertTrue( - EmfRestTestUtil.compare(retrievedTestSpecifications.getJSONObject(1), testSpecification2, true)); + + protected String detailUrl(String... segments) { + return buildUrl("details", segments); } - /** - * Posts two test specifications to a CEG model and checks if they are - * retrieved by the list recursive service. - * - * @throws InterruptedException - */ - @Test - public void testSearch() throws InterruptedException { - JSONObject folder = createTestFolder(); - folder.put(BasePackage.Literals.INAMED__NAME.getName(), "Test"); - folder.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "TEST"); - postObject(folder); - String folderName = getId(folder); - - JSONObject requirement = createTestRequirement(); - requirement.put(BasePackage.Literals.INAMED__NAME.getName(), "Test BLA BLI"); - requirement.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "TEST BLUP"); - postObject(requirement, folderName); - String requirementId = getId(requirement); - - JSONObject requirement2 = createTestRequirement(); - requirement2.put(BasePackage.Literals.INAMED__NAME.getName(), "Test"); - requirement2.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "TEST BLI"); - requirement2.put(BasePackage.Literals.IEXTERNAL__EXT_ID.getName(), "4711"); - postObject(requirement2, folderName); - - JSONObject requirement3 = createTestRequirement(); - requirement3.put(BasePackage.Literals.INAMED__NAME.getName(), "Tree"); - requirement3.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "Tree"); - postObject(requirement3, folderName); - - JSONObject cegModel = createTestCegModel(); - cegModel.put(BasePackage.Literals.INAMED__NAME.getName(), "Test CEG"); - cegModel.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "CEG"); - postObject(cegModel, folderName, requirementId); - - // Allow time to commit to search index - Thread.sleep(35000); - - // Check if search on name field works - JSONArray foundObjects = performSearch("blup"); - Assert.assertEquals(1, foundObjects.length()); - - foundObjects = performSearch("BLUP"); - Assert.assertEquals(1, foundObjects.length()); - - foundObjects = performSearch("Blup"); - Assert.assertEquals(1, foundObjects.length()); - - // check if search on description field works - foundObjects = performSearch("bla"); - Assert.assertEquals(1, foundObjects.length()); - - // check if search on extid field works - foundObjects = performSearch("4711"); - Assert.assertEquals(1, foundObjects.length()); - - // check if search on multiple fields across objects works - foundObjects = performSearch("bli"); - Assert.assertEquals(2, foundObjects.length()); - - // check if wildcard search workds - foundObjects = performSearch("bl*"); - Assert.assertEquals(2, foundObjects.length()); - - // check if explicit name search works - foundObjects = performSearch("name:bli"); - Assert.assertEquals(1, foundObjects.length()); - - // check if explicit description search works - foundObjects = performSearch("description:bli"); - Assert.assertEquals(1, foundObjects.length()); - - // check if negative search works - foundObjects = performSearch("bli -(name:bla)"); - Assert.assertEquals(1, foundObjects.length()); - - // check if type search workds - foundObjects = performSearch("type:CEGModel"); - Assert.assertEquals(1, foundObjects.length()); - - // check if type search workds - foundObjects = performSearch("type:Requirement"); - Assert.assertEquals(3, foundObjects.length()); - - // check if search is robust agains syntax errors (no closed bracket) - foundObjects = performSearch("(type:Requirement"); - Assert.assertEquals(0, foundObjects.length()); - - // check if search is robust agains syntax errors (no opened bracket) - foundObjects = performSearch("type:Requirement)"); - Assert.assertEquals(0, foundObjects.length()); - - // check if search is robust agains syntax errors (no opened bracket) - foundObjects = performSearch("type:Requirement)"); - Assert.assertEquals(0, foundObjects.length()); - - // spurios "minus" - foundObjects = performSearch("bla -"); - Assert.assertEquals(0, foundObjects.length()); - + protected String deleteUrl(String... segments) { + return buildUrl("delete", segments); } - } \ No newline at end of file diff --git a/bundles/specmate-integration-test/src/com/specmate/test/integration/HistoryTest.java b/bundles/specmate-integration-test/src/com/specmate/test/integration/HistoryTest.java new file mode 100644 index 000000000..f99f6380e --- /dev/null +++ b/bundles/specmate-integration-test/src/com/specmate/test/integration/HistoryTest.java @@ -0,0 +1,185 @@ +package com.specmate.test.integration; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import com.specmate.common.RestResult; +import com.specmate.common.SpecmateException; +import com.specmate.model.base.BasePackage; +import com.specmate.model.history.HistoryPackage; + +public class HistoryTest extends EmfRestTest { + + public HistoryTest() throws Exception {} + + private String historyUrl(String... segments) { + return buildUrl("history", segments); + } + + private String historyRecursiveUrl(String... segments) { + return buildUrl("historyRecursive", segments); + } + + private JSONArray getEntries(boolean recursive, String... segments) { + String historyUrl = recursive ? historyRecursiveUrl(segments) : historyUrl(segments); + RestResult result = restClient.get(historyUrl); + JSONObject history = result.getPayload(); + return history.getJSONArray(HistoryPackage.Literals.HISTORY__ENTRIES.getName()); + } + + @Before + public void clear() throws SpecmateException { + clearPersistency(); + } + + /** + * Tests that the history entries are returned is reversed creation order + * and expected state (creation, modification). + */ + @Test + public void testHistoryIsInSequence() { + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + String newName = "changedName"; + int numChangeNames = 11; + for(int i = 0; i < numChangeNames; i++) { + requirement.put(BasePackage.Literals.INAMED__NAME.getName(), newName + i); + updateObject(requirement, requirementId); + } + + checkSequence(getEntries(false, requirementId), newName, numChangeNames); + checkSequence(getEntries(true, requirementId), newName, numChangeNames); + } + + private void checkSequence(JSONArray entries, String newName, int numChangeNames) { + assertEquals(numChangeNames + 1, entries.length()); + for(int i = 0, j = numChangeNames - 1; i < numChangeNames; i++, j--) { + JSONObject entry = entries.getJSONObject(i); + assertTrue(entry.getString(HistoryPackage.Literals.HISTORY_ENTRY__USER.getName()).length() > 0); + JSONArray changes = entry.getJSONArray(HistoryPackage.Literals.HISTORY_ENTRY__CHANGES.getName()); + assertEquals(1, changes.length()); + JSONObject change = changes.getJSONObject(0); + assertEquals(newName + j, change.getString(HistoryPackage.Literals.CHANGE__NEW_VALUE.getName())); + assertEquals(BasePackage.Literals.INAMED__NAME.getName(), change.getString(HistoryPackage.Literals.CHANGE__FEATURE.getName())); + assertFalse(change.getBoolean(HistoryPackage.Literals.CHANGE__IS_CREATE.getName())); + assertFalse(change.getBoolean(HistoryPackage.Literals.CHANGE__IS_DELETE.getName())); + } + + JSONObject creation = entries.getJSONObject(numChangeNames); + assertTrue(creation.getString(HistoryPackage.Literals.HISTORY_ENTRY__USER.getName()).length() > 0); + JSONArray changes = creation.getJSONArray(HistoryPackage.Literals.HISTORY_ENTRY__CHANGES.getName()); + for(int i = 0; i < changes.length(); i++) { + JSONObject change = changes.getJSONObject(i); + assertTrue(change.getBoolean(HistoryPackage.Literals.CHANGE__IS_CREATE.getName())); + assertFalse(change.getBoolean(HistoryPackage.Literals.CHANGE__IS_DELETE.getName())); + } + } + + /** + * Tests that the object hierarchy is traversed to get history elements by + * asserting the number of history entries for created and deleted objects. + */ + @Test + public void testRecursiveHistory() { + // Change 1 + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + + // Change 2 + JSONObject cegModel = postCEG(requirementId); + String cegId = getId(cegModel); + + // Change 3 + JSONObject cegNode1 = postCEGNode(requirementId, cegId); + String node1Id = getId(cegNode1); + + JSONObject retrievedCegNode1 = getObject(requirementId, cegId, node1Id); + Assert.assertTrue(EmfRestTestUtil.compare(cegNode1, retrievedCegNode1, true)); + + // Change 4 + JSONObject cegNode2 = postCEGNode(requirementId, cegId); + String node2Id = getId(cegNode2); + + JSONObject retrievedCegNode2 = getObject(requirementId, cegId, node2Id); + Assert.assertTrue(EmfRestTestUtil.compare(cegNode2, retrievedCegNode2, true)); + + // Change 5, 6, 7 + JSONObject connection = postCEGConnection(retrievedCegNode1, retrievedCegNode2, requirementId, cegId); + String connectionId = getId(connection); + + JSONArray entries = getEntries(true, requirementId); + assertEquals(7, entries.length()); + + // Change 8, 9, 10 + deleteObject(requirementId, cegId, connectionId); + + /** + * And this assertion fails because deleting a connection between two nodes removes the + * connection (feature: id) from the history completely, both creation and deletion. + * Strangely, the elements with feature "incomingConnections" and "outgoingConnections" are maintained + * in the history (both creation and deletion). + * Not sure what is going on here... + */ + entries = getEntries(true, requirementId); + assertEquals(10, entries.length()); + JSONObject entry = entries.getJSONObject(0); + JSONArray changes = entry.getJSONArray(HistoryPackage.Literals.HISTORY_ENTRY__CHANGES.getName()); + assertEquals(1, changes.length()); + JSONObject deletion = changes.getJSONObject(0); + assertTrue(deletion.getBoolean(HistoryPackage.Literals.CHANGE__IS_DELETE.getName())); + } + + /** + * Tests that the history of subtrees returns the correct number of elements + * for created and modified objects. + */ + @Test + public void testHistorySubset() { + // Change 1 + JSONObject requirement = postRequirementToRoot(); + String requirementId = getId(requirement); + + // Change 2 + JSONObject cegModel = postCEG(requirementId); + String cegId = getId(cegModel); + + // Change 3 + JSONObject cegNode1 = postCEGNode(requirementId, cegId); + String node1Id = getId(cegNode1); + + JSONObject retrievedCegNode1 = getObject(requirementId, cegId, node1Id); + Assert.assertTrue(EmfRestTestUtil.compare(cegNode1, retrievedCegNode1, true)); + + // Change 4 + JSONObject cegNode2 = postCEGNode(requirementId, cegId); + String node2Id = getId(cegNode2); + + JSONObject retrievedCegNode2 = getObject(requirementId, cegId, node2Id); + Assert.assertTrue(EmfRestTestUtil.compare(cegNode2, retrievedCegNode2, true)); + + // Change 5, 6, 7 + postCEGConnection(retrievedCegNode1, retrievedCegNode2, requirementId, cegId); + + JSONArray entries = getEntries(true, requirementId); + assertEquals(7, entries.length()); + entries = getEntries(false, requirementId); + assertEquals(1, entries.length()); + entries = getEntries(true, requirementId, cegId); + assertEquals(6, entries.length()); + entries = getEntries(false, requirementId, cegId); + assertEquals(1, entries.length()); + + cegModel.put(BasePackage.Literals.INAMED__NAME.getName(), "newName"); + updateObject(cegModel, requirementId, cegId); + entries = getEntries(false, requirementId, cegId); + assertEquals(2, entries.length()); + } + +} diff --git a/bundles/specmate-integration-test/src/com/specmate/test/integration/SearchTest.java b/bundles/specmate-integration-test/src/com/specmate/test/integration/SearchTest.java new file mode 100644 index 000000000..5d6cc0f24 --- /dev/null +++ b/bundles/specmate-integration-test/src/com/specmate/test/integration/SearchTest.java @@ -0,0 +1,152 @@ +package com.specmate.test.integration; + +import javax.ws.rs.core.Response.Status; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.osgi.util.tracker.ServiceTracker; + +import com.specmate.common.RestResult; +import com.specmate.common.SpecmateException; +import com.specmate.model.base.BasePackage; +import com.specmate.search.api.IModelSearchService; + +public class SearchTest extends EmfRestTest { + private static IModelSearchService searchService; + + public SearchTest() throws Exception {} + + @BeforeClass + public static void init() throws Exception { + searchService = getSearchService(); + } + + private static IModelSearchService getSearchService() throws InterruptedException { + ServiceTracker searchServiceTracker = new ServiceTracker<>(context, + IModelSearchService.class.getName(), null); + searchServiceTracker.open(); + IModelSearchService searchService = searchServiceTracker.waitForService(100000); + Assert.assertNotNull(searchService); + return searchService; + } + + private JSONArray performSearch(String query) { + String searchUrl = buildUrl("search"); + RestResult result = restClient.getList(searchUrl, "query", query); + Assert.assertEquals(Status.OK.getStatusCode(), result.getResponse().getStatus()); + JSONArray foundObjects = result.getPayload(); + return foundObjects; + } + + @Before + public void clear() throws SpecmateException { + searchService.clear(); + } + + /** + * Posts two test specifications to a CEG model and checks if they are + * retrieved by the list recursive service. + * + * @throws InterruptedException + */ + @Test + public void testSearch() throws InterruptedException { + JSONObject folder = createTestFolder(); + folder.put(BasePackage.Literals.INAMED__NAME.getName(), "Test"); + folder.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "TEST"); + postObject(folder); + String folderName = getId(folder); + + JSONObject requirement = createTestRequirement(); + requirement.put(BasePackage.Literals.INAMED__NAME.getName(), "Test BLA BLI"); + requirement.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "TEST BLUP"); + postObject(requirement, folderName); + String requirementId = getId(requirement); + + JSONObject requirement2 = createTestRequirement(); + requirement2.put(BasePackage.Literals.INAMED__NAME.getName(), "Test"); + requirement2.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "TEST BLI"); + requirement2.put(BasePackage.Literals.IEXTERNAL__EXT_ID.getName(), "4711"); + postObject(requirement2, folderName); + + JSONObject requirement3 = createTestRequirement(); + requirement3.put(BasePackage.Literals.INAMED__NAME.getName(), "Tree"); + requirement3.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "Tree"); + postObject(requirement3, folderName); + + JSONObject cegModel = createTestCegModel(); + cegModel.put(BasePackage.Literals.INAMED__NAME.getName(), "Test CEG"); + cegModel.put(BasePackage.Literals.IDESCRIBED__DESCRIPTION.getName(), "CEG"); + postObject(cegModel, folderName, requirementId); + + // Allow time to commit to search index + Thread.sleep(35000); + + // Check if search on name field works + JSONArray foundObjects = performSearch("blup"); + Assert.assertEquals(1, foundObjects.length()); + + foundObjects = performSearch("BLUP"); + Assert.assertEquals(1, foundObjects.length()); + + foundObjects = performSearch("Blup"); + Assert.assertEquals(1, foundObjects.length()); + + // check if search on description field works + foundObjects = performSearch("bla"); + Assert.assertEquals(1, foundObjects.length()); + + // check if search on extid field works + foundObjects = performSearch("4711"); + Assert.assertEquals(1, foundObjects.length()); + + // check if search on multiple fields across objects works + foundObjects = performSearch("bli"); + Assert.assertEquals(2, foundObjects.length()); + + // check if wildcard search workds + foundObjects = performSearch("bl*"); + Assert.assertEquals(2, foundObjects.length()); + + // check if explicit name search works + foundObjects = performSearch("name:bli"); + Assert.assertEquals(1, foundObjects.length()); + + // check if explicit description search works + foundObjects = performSearch("description:bli"); + Assert.assertEquals(1, foundObjects.length()); + + // check if negative search works + foundObjects = performSearch("bli -(name:bla)"); + Assert.assertEquals(1, foundObjects.length()); + + // check if type search workds + foundObjects = performSearch("type:CEGModel"); + Assert.assertEquals(1, foundObjects.length()); + + // check if type search workds + foundObjects = performSearch("type:Requirement"); + Assert.assertEquals(3, foundObjects.length()); + + // check if search is robust agains syntax errors (no closed bracket) + foundObjects = performSearch("(type:Requirement"); + Assert.assertEquals(0, foundObjects.length()); + + // check if search is robust agains syntax errors (no opened bracket) + foundObjects = performSearch("type:Requirement)"); + Assert.assertEquals(0, foundObjects.length()); + + // check if search is robust agains syntax errors (no opened bracket) + foundObjects = performSearch("type:Requirement)"); + Assert.assertEquals(0, foundObjects.length()); + + // spurios "minus" + foundObjects = performSearch("bla -"); + Assert.assertEquals(0, foundObjects.length()); + + } +} From 46c9501098227d7f9d5431cbdba8dd7929eae272 Mon Sep 17 00:00:00 2001 From: Michael Unterkalmsteiner Date: Sat, 24 Feb 2018 21:40:48 +0100 Subject: [PATCH 3/9] Use Location instead of ActivatedRoute --- .../navigator/services/navigator.service.ts | 17 +++++++---------- web/src/app/util/url.ts | 8 ++++++++ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts b/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts index 5e74ef0e8..128e754af 100644 --- a/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts +++ b/web/src/app/modules/navigation/modules/navigator/services/navigator.service.ts @@ -3,7 +3,7 @@ import { Injectable, EventEmitter } from '@angular/core'; import { IContainer } from '../../../../../model/IContainer'; import { SpecmateDataService } from '../../../../data/modules/data-service/services/specmate-data.service'; import { LoggingService } from '../../../../views/side/modules/log-list/services/logging.service'; -import { Router, ActivatedRoute, NavigationEnd } from '@angular/router'; +import { Router, NavigationEnd } from '@angular/router'; import { Url } from '../../../../../util/url'; import { Location } from '@angular/common'; @@ -19,19 +19,15 @@ export class NavigatorService { private dataService: SpecmateDataService, private logger: LoggingService, private router: Router, - private route: ActivatedRoute, private location: Location) { this.location.subscribe(pse => { - this.handleBrowserBackForwardButton(decodeURIComponent(pse.url)); + this.handleBrowserBackForwardButton(Url.stripBasePath(pse.url)); }); let subscription: Subscription = this.router.events.subscribe((event) => { if (event instanceof NavigationEnd) { - if (!this.route.snapshot.children[0] || !Url.fromParams(this.route.snapshot.children[0].params)) { - return; - } - let currentUrl: string = Url.fromParams(this.route.snapshot.children[0].params); + let currentUrl: string = Url.stripBasePath(this.location.path()); this.dataService.readElement(currentUrl, true) .then((element: IContainer) => { if (element) { @@ -97,13 +93,14 @@ export class NavigatorService { let previous: IContainer = this.previousElement; let next: IContainer = this.nextElement; - if (previous && navigatedTo.includes(previous.url)) { + if (previous && navigatedTo == previous.url) { this.current -= 1; - } else if (next && navigatedTo.includes(next.url)) { + } else if (next && navigatedTo == next.url) { this.current += 1; } - // Do we need here also to perform discardChanges() and clearCommits() as in performNavigation? + this.dataService.discardChanges(); + this.dataService.clearCommits(); } public get currentElement(): IContainer { diff --git a/web/src/app/util/url.ts b/web/src/app/util/url.ts index c2b966694..5453b629a 100644 --- a/web/src/app/util/url.ts +++ b/web/src/app/util/url.ts @@ -9,6 +9,14 @@ export class Url { return Config.VIEW_URL_PREFIX + cls.className; } + public static stripBasePath(path: string): string { + // Expected input: /-/basepath/url%2Fmorestuff + // Output: url/morestuff + path = decodeURIComponent(path); + path = path.slice(Config.VIEW_URL_PREFIX.length); + return path.slice(path.indexOf(this.SEP, path.indexOf(this.SEP) + 1) + 1); + } + public static parent(url: string): string { let parts: string[] = url.split(Url.SEP); parts.splice(parts.length - 1, 1); From 7b96dc665f718e1f791199280b2cd28585a6f706 Mon Sep 17 00:00:00 2001 From: Maximilian Junker Date: Tue, 27 Feb 2018 08:01:56 +0100 Subject: [PATCH 4/9] generated js --- bundles/specmate-ui-core/webcontent/assets.js | 4427 ++++++++++++++++- .../specmate-ui-core/webcontent/i18n/de.json | 1 + .../specmate-ui-core/webcontent/i18n/gb.json | 1 + .../specmate-ui-core/webcontent/polyfills.js | 1912 ++++++- .../specmate-ui-core/webcontent/specmate.js | 2508 +++++++++- bundles/specmate-ui-core/webcontent/vendor.js | 1784 ++++++- 6 files changed, 10629 insertions(+), 4 deletions(-) diff --git a/bundles/specmate-ui-core/webcontent/assets.js b/bundles/specmate-ui-core/webcontent/assets.js index 47d0f277d..2ea62209d 100644 --- a/bundles/specmate-ui-core/webcontent/assets.js +++ b/bundles/specmate-ui-core/webcontent/assets.js @@ -1 +1,4426 @@ -!function(n){var o=window.webpackJsonp;window.webpackJsonp=function(e,a,i){for(var l,c,f,d=0,b=[];d=0&&d.splice(o,1)}function u(n){var o=document.createElement("style");return n.attrs.type="text/css",x(o,n.attrs),m(n,o),o}function x(n,o){Object.keys(o).forEach(function(e){n.setAttribute(e,o[e])})}function w(n,o){var e,t,r,a;if(o.transform&&n.css){if(!(a=o.transform(n.css)))return function(){};n.css=a}if(o.singleton){var i=f++;e=c||(c=u(o)),t=v.bind(null,e,i,!1),r=v.bind(null,e,i,!0)}else n.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=function(n){var o=document.createElement("link");return n.attrs.type="text/css",n.attrs.rel="stylesheet",x(o,n.attrs),m(n,o),o}(o),t=function(n,o,e){var t=e.css,r=e.sourceMap,a=void 0===o.convertToAbsoluteUrls&&r;(o.convertToAbsoluteUrls||a)&&(t=b(t));r&&(t+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var i=new Blob([t],{type:"text/css"}),l=n.href;n.href=URL.createObjectURL(i),l&&URL.revokeObjectURL(l)}.bind(null,e,o),r=function(){p(e),e.href&&URL.revokeObjectURL(e.href)}):(e=u(o),t=function(n,o){var e=o.css,t=o.media;t&&n.setAttribute("media",t);if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}.bind(null,e),r=function(){p(e)});return t(n),function(o){if(o){if(o.css===n.css&&o.media===n.media&&o.sourceMap===n.sourceMap)return;t(n=o)}else r()}}n.exports=function(n,o){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(o=o||{}).attrs="object"==typeof o.attrs?o.attrs:{},o.singleton||"boolean"==typeof o.singleton||(o.singleton=i()),o.insertInto||(o.insertInto="head"),o.insertAt||(o.insertAt="bottom");var e=g(n,o);return s(e,o),function(n){for(var t=[],r=0;r code {\n color: inherit; }\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 87.5%;\n color: #fff;\n background-color: #222;\n border-radius: 0; }\n kbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700; }\n\npre {\n display: block;\n font-size: 87.5%;\n color: #222; }\n pre code {\n font-size: inherit;\n color: inherit;\n word-break: normal; }\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll; }\n\n.container {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto; }\n @media (min-width: 576px) {\n .container {\n max-width: 540px; } }\n @media (min-width: 768px) {\n .container {\n max-width: 720px; } }\n @media (min-width: 992px) {\n .container {\n max-width: 960px; } }\n @media (min-width: 1200px) {\n .container {\n max-width: 1140px; } }\n\n.container-fluid {\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto; }\n\n.row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px; }\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0; }\n .no-gutters > .col,\n .no-gutters > [class*="col-"] {\n padding-right: 0;\n padding-left: 0; }\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px; }\n\n.col {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n\n.col-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n\n.col-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n\n.col-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n\n.col-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n\n.col-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n\n.col-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n\n.col-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n\n.col-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n\n.col-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n\n.col-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n\n.col-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n\n.col-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n\n.col-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n\n.order-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n\n.order-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13; }\n\n.order-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0; }\n\n.order-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n\n.order-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n\n.order-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n\n.order-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n\n.order-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n\n.order-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n\n.order-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n\n.order-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n\n.order-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n\n.order-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n\n.order-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n\n.order-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n\n.offset-1 {\n margin-left: 8.33333%; }\n\n.offset-2 {\n margin-left: 16.66667%; }\n\n.offset-3 {\n margin-left: 25%; }\n\n.offset-4 {\n margin-left: 33.33333%; }\n\n.offset-5 {\n margin-left: 41.66667%; }\n\n.offset-6 {\n margin-left: 50%; }\n\n.offset-7 {\n margin-left: 58.33333%; }\n\n.offset-8 {\n margin-left: 66.66667%; }\n\n.offset-9 {\n margin-left: 75%; }\n\n.offset-10 {\n margin-left: 83.33333%; }\n\n.offset-11 {\n margin-left: 91.66667%; }\n\n@media (min-width: 576px) {\n .col-sm {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-sm-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-sm-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-sm-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-sm-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-sm-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-sm-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-sm-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-sm-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-sm-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-sm-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-sm-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-sm-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-sm-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-sm-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-sm-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13; }\n .order-sm-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0; }\n .order-sm-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-sm-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-sm-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-sm-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-sm-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-sm-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-sm-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-sm-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-sm-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-sm-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-sm-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-sm-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-sm-0 {\n margin-left: 0; }\n .offset-sm-1 {\n margin-left: 8.33333%; }\n .offset-sm-2 {\n margin-left: 16.66667%; }\n .offset-sm-3 {\n margin-left: 25%; }\n .offset-sm-4 {\n margin-left: 33.33333%; }\n .offset-sm-5 {\n margin-left: 41.66667%; }\n .offset-sm-6 {\n margin-left: 50%; }\n .offset-sm-7 {\n margin-left: 58.33333%; }\n .offset-sm-8 {\n margin-left: 66.66667%; }\n .offset-sm-9 {\n margin-left: 75%; }\n .offset-sm-10 {\n margin-left: 83.33333%; }\n .offset-sm-11 {\n margin-left: 91.66667%; } }\n\n@media (min-width: 768px) {\n .col-md {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-md-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-md-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-md-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-md-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-md-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-md-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-md-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-md-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-md-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-md-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-md-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-md-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-md-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-md-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-md-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13; }\n .order-md-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0; }\n .order-md-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-md-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-md-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-md-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-md-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-md-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-md-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-md-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-md-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-md-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-md-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-md-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-md-0 {\n margin-left: 0; }\n .offset-md-1 {\n margin-left: 8.33333%; }\n .offset-md-2 {\n margin-left: 16.66667%; }\n .offset-md-3 {\n margin-left: 25%; }\n .offset-md-4 {\n margin-left: 33.33333%; }\n .offset-md-5 {\n margin-left: 41.66667%; }\n .offset-md-6 {\n margin-left: 50%; }\n .offset-md-7 {\n margin-left: 58.33333%; }\n .offset-md-8 {\n margin-left: 66.66667%; }\n .offset-md-9 {\n margin-left: 75%; }\n .offset-md-10 {\n margin-left: 83.33333%; }\n .offset-md-11 {\n margin-left: 91.66667%; } }\n\n@media (min-width: 992px) {\n .col-lg {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-lg-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-lg-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-lg-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-lg-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-lg-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-lg-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-lg-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-lg-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-lg-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-lg-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-lg-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-lg-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-lg-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-lg-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-lg-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13; }\n .order-lg-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0; }\n .order-lg-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-lg-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-lg-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-lg-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-lg-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-lg-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-lg-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-lg-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-lg-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-lg-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-lg-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-lg-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-lg-0 {\n margin-left: 0; }\n .offset-lg-1 {\n margin-left: 8.33333%; }\n .offset-lg-2 {\n margin-left: 16.66667%; }\n .offset-lg-3 {\n margin-left: 25%; }\n .offset-lg-4 {\n margin-left: 33.33333%; }\n .offset-lg-5 {\n margin-left: 41.66667%; }\n .offset-lg-6 {\n margin-left: 50%; }\n .offset-lg-7 {\n margin-left: 58.33333%; }\n .offset-lg-8 {\n margin-left: 66.66667%; }\n .offset-lg-9 {\n margin-left: 75%; }\n .offset-lg-10 {\n margin-left: 83.33333%; }\n .offset-lg-11 {\n margin-left: 91.66667%; } }\n\n@media (min-width: 1200px) {\n .col-xl {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%; }\n .col-xl-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none; }\n .col-xl-1 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333%;\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .col-xl-2 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66667%;\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .col-xl-3 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%; }\n .col-xl-4 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333%;\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .col-xl-5 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66667%;\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .col-xl-6 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%; }\n .col-xl-7 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333%;\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .col-xl-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66667%;\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .col-xl-9 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%; }\n .col-xl-10 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333%;\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .col-xl-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66667%;\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .col-xl-12 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%; }\n .order-xl-first {\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1; }\n .order-xl-last {\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13; }\n .order-xl-0 {\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0; }\n .order-xl-1 {\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1; }\n .order-xl-2 {\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2; }\n .order-xl-3 {\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3; }\n .order-xl-4 {\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4; }\n .order-xl-5 {\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5; }\n .order-xl-6 {\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6; }\n .order-xl-7 {\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7; }\n .order-xl-8 {\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8; }\n .order-xl-9 {\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9; }\n .order-xl-10 {\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10; }\n .order-xl-11 {\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11; }\n .order-xl-12 {\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12; }\n .offset-xl-0 {\n margin-left: 0; }\n .offset-xl-1 {\n margin-left: 8.33333%; }\n .offset-xl-2 {\n margin-left: 16.66667%; }\n .offset-xl-3 {\n margin-left: 25%; }\n .offset-xl-4 {\n margin-left: 33.33333%; }\n .offset-xl-5 {\n margin-left: 41.66667%; }\n .offset-xl-6 {\n margin-left: 50%; }\n .offset-xl-7 {\n margin-left: 58.33333%; }\n .offset-xl-8 {\n margin-left: 66.66667%; }\n .offset-xl-9 {\n margin-left: 75%; }\n .offset-xl-10 {\n margin-left: 83.33333%; }\n .offset-xl-11 {\n margin-left: 91.66667%; } }\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent; }\n .table th,\n .table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #dee2e6; }\n .table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #dee2e6; }\n .table tbody + tbody {\n border-top: 2px solid #dee2e6; }\n .table .table {\n background-color: #fff; }\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem; }\n\n.table-bordered {\n border: 1px solid #dee2e6; }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #dee2e6; }\n .table-bordered thead th,\n .table-bordered thead td {\n border-bottom-width: 2px; }\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05); }\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n background-color: #b8dfec; }\n\n.table-hover .table-primary:hover {\n background-color: #a4d6e7; }\n .table-hover .table-primary:hover > td,\n .table-hover .table-primary:hover > th {\n background-color: #a4d6e7; }\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n background-color: #fafafa; }\n\n.table-hover .table-secondary:hover {\n background-color: #ededed; }\n .table-hover .table-secondary:hover > td,\n .table-hover .table-secondary:hover > th {\n background-color: #ededed; }\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #cae8d5; }\n\n.table-hover .table-success:hover {\n background-color: #b8e0c7; }\n .table-hover .table-success:hover > td,\n .table-hover .table-success:hover > th {\n background-color: #b8e0c7; }\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #d1edf6; }\n\n.table-hover .table-info:hover {\n background-color: #bce5f2; }\n .table-hover .table-info:hover > td,\n .table-hover .table-info:hover > th {\n background-color: #bce5f2; }\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #f9e0b8; }\n\n.table-hover .table-warning:hover {\n background-color: #f7d6a0; }\n .table-hover .table-warning:hover > td,\n .table-hover .table-warning:hover > th {\n background-color: #f7d6a0; }\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #fbcac2; }\n\n.table-hover .table-danger:hover {\n background-color: #f9b5aa; }\n .table-hover .table-danger:hover > td,\n .table-hover .table-danger:hover > th {\n background-color: #f9b5aa; }\n\n.table-light,\n.table-light > th,\n.table-light > td {\n background-color: #fafafa; }\n\n.table-hover .table-light:hover {\n background-color: #ededed; }\n .table-hover .table-light:hover > td,\n .table-hover .table-light:hover > th {\n background-color: #ededed; }\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n background-color: #c1c1c1; }\n\n.table-hover .table-dark:hover {\n background-color: #b4b4b4; }\n .table-hover .table-dark:hover > td,\n .table-hover .table-dark:hover > th {\n background-color: #b4b4b4; }\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075); }\n .table-hover .table-active:hover > td,\n .table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075); }\n\n.table .thead-dark th {\n color: #fff;\n background-color: #222;\n border-color: #353535; }\n\n.table .thead-light th {\n color: #495057;\n background-color: #eee;\n border-color: #dee2e6; }\n\n.table-dark {\n color: #fff;\n background-color: #222; }\n .table-dark th,\n .table-dark td,\n .table-dark thead th {\n border-color: #353535; }\n .table-dark.table-bordered {\n border: 0; }\n .table-dark.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05); }\n .table-dark.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075); }\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-sm > .table-bordered {\n border: 0; } }\n\n@media (max-width: 767.98px) {\n .table-responsive-md {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-md > .table-bordered {\n border: 0; } }\n\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-lg > .table-bordered {\n border: 0; } }\n\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive-xl > .table-bordered {\n border: 0; } }\n\n.table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n -ms-overflow-style: -ms-autohiding-scrollbar; }\n .table-responsive > .table-bordered {\n border: 0; }\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 1rem;\n font-size: 0.9375rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border-radius: 0;\n -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; }\n .form-control::-ms-expand {\n background-color: transparent;\n border: 0; }\n .form-control:focus {\n color: #495057;\n background-color: #fff;\n border-color: #3bceff;\n outline: 0;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25); }\n .form-control::-webkit-input-placeholder {\n color: #888;\n opacity: 1; }\n .form-control:-ms-input-placeholder {\n color: #888;\n opacity: 1; }\n .form-control::-ms-input-placeholder {\n color: #888;\n opacity: 1; }\n .form-control::placeholder {\n color: #888;\n opacity: 1; }\n .form-control:disabled, .form-control[readonly] {\n background-color: #eee;\n opacity: 1; }\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.15625rem + 2px); }\n\nselect.form-control:focus::-ms-value {\n color: #495057;\n background-color: #fff; }\n\n.form-control-file,\n.form-control-range {\n display: block;\n width: 100%; }\n\n.col-form-label {\n padding-top: calc(0.375rem + 1px);\n padding-bottom: calc(0.375rem + 1px);\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5; }\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + 1px);\n padding-bottom: calc(0.5rem + 1px);\n font-size: 1.17188rem;\n line-height: 1.5; }\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + 1px);\n padding-bottom: calc(0.25rem + 1px);\n font-size: 0.82031rem;\n line-height: 1.5; }\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n margin-bottom: 0;\n line-height: 1.5;\n background-color: transparent;\n border: solid transparent;\n border-width: 1px 0; }\n .form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n .input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n .input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n .input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n .input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n .input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n .input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n .input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n .input-group-lg > .input-group-append > .form-control-plaintext.btn {\n padding-right: 0;\n padding-left: 0; }\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.82031rem;\n line-height: 1.5;\n border-radius: 0; }\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(1.73047rem + 2px); }\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.17188rem;\n line-height: 1.5;\n border-radius: 0; }\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n height: calc(2.75781rem + 2px); }\n\n.form-group {\n margin-bottom: 1rem; }\n\n.form-text {\n display: block;\n margin-top: 0.25rem; }\n\n.form-row {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -5px;\n margin-left: -5px; }\n .form-row > .col,\n .form-row > [class*="col-"] {\n padding-right: 5px;\n padding-left: 5px; }\n\n.form-check {\n position: relative;\n display: block;\n padding-left: 1.25rem; }\n\n.form-check-input {\n position: absolute;\n margin-top: 0.3rem;\n margin-left: -1.25rem; }\n .form-check-input:disabled ~ .form-check-label {\n color: #888; }\n\n.form-check-label {\n margin-bottom: 0; }\n\n.form-check-inline {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding-left: 0;\n margin-right: 0.75rem; }\n .form-check-inline .form-check-input {\n position: static;\n margin-top: 0;\n margin-right: 0.3125rem;\n margin-left: 0; }\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #43ac6a; }\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(67, 172, 106, 0.8);\n border-radius: .2rem; }\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n border-color: #43ac6a; }\n .was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n .custom-select:valid:focus,\n .custom-select.is-valid:focus {\n border-color: #43ac6a;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.25); }\n .was-validated .form-control:valid ~ .valid-feedback,\n .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n .form-control.is-valid ~ .valid-tooltip, .was-validated\n .custom-select:valid ~ .valid-feedback,\n .was-validated\n .custom-select:valid ~ .valid-tooltip,\n .custom-select.is-valid ~ .valid-feedback,\n .custom-select.is-valid ~ .valid-tooltip {\n display: block; }\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: #43ac6a; }\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n display: block; }\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n color: #43ac6a; }\n .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n background-color: #98d7af; }\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n display: block; }\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n background-color: #61c185; }\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(67, 172, 106, 0.25);\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(67, 172, 106, 0.25); }\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n border-color: #43ac6a; }\n .was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n border-color: inherit; }\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n display: block; }\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.25); }\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 80%;\n color: #F04124; }\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: .5rem;\n margin-top: .1rem;\n font-size: .875rem;\n line-height: 1;\n color: #fff;\n background-color: rgba(240, 65, 36, 0.8);\n border-radius: .2rem; }\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n border-color: #F04124; }\n .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n .custom-select:invalid:focus,\n .custom-select.is-invalid:focus {\n border-color: #F04124;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.25); }\n .was-validated .form-control:invalid ~ .invalid-feedback,\n .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n .form-control.is-invalid ~ .invalid-tooltip, .was-validated\n .custom-select:invalid ~ .invalid-feedback,\n .was-validated\n .custom-select:invalid ~ .invalid-tooltip,\n .custom-select.is-invalid ~ .invalid-feedback,\n .custom-select.is-invalid ~ .invalid-tooltip {\n display: block; }\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: #F04124; }\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n display: block; }\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n color: #F04124; }\n .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n background-color: #f8a99b; }\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n display: block; }\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n background-color: #f36a54; }\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(240, 65, 36, 0.25);\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(240, 65, 36, 0.25); }\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n border-color: #F04124; }\n .was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n border-color: inherit; }\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n display: block; }\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.25); }\n\n.form-inline {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .form-inline .form-check {\n width: 100%; }\n @media (min-width: 576px) {\n .form-inline label {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin-bottom: 0; }\n .form-inline .form-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n margin-bottom: 0; }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle; }\n .form-inline .form-control-plaintext {\n display: inline-block; }\n .form-inline .input-group {\n width: auto; }\n .form-inline .form-check {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: auto;\n padding-left: 0; }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0; }\n .form-inline .custom-control {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .form-inline .custom-control-label {\n margin-bottom: 0; } }\n\n.btn {\n display: inline-block;\n font-weight: 300;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 1rem;\n font-size: 0.9375rem;\n line-height: 1.5;\n border-radius: 0;\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; }\n .btn:hover, .btn:focus {\n text-decoration: none; }\n .btn:focus, .btn.focus {\n outline: 0;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25); }\n .btn.disabled, .btn:disabled {\n opacity: 0.65; }\n .btn:not(:disabled):not(.disabled) {\n cursor: pointer; }\n .btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n background-image: none; }\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none; }\n\n.btn-primary {\n color: #fff;\n background-color: #008cba;\n border-color: #008cba; }\n .btn-primary:hover {\n color: #fff;\n background-color: #006f94;\n border-color: #006687; }\n .btn-primary:focus, .btn-primary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5); }\n .btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #008cba;\n border-color: #008cba; }\n .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n .show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #006687;\n border-color: #005c7a; }\n .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n .show > .btn-primary.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5); }\n\n.btn-secondary {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-secondary:hover {\n color: #222;\n background-color: #dbdbdb;\n border-color: #d5d5d5; }\n .btn-secondary:focus, .btn-secondary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n .btn-secondary.disabled, .btn-secondary:disabled {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n .show > .btn-secondary.dropdown-toggle {\n color: #222;\n background-color: #d5d5d5;\n border-color: #cecece; }\n .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n .show > .btn-secondary.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n\n.btn-success {\n color: #fff;\n background-color: #43ac6a;\n border-color: #43ac6a; }\n .btn-success:hover {\n color: #fff;\n background-color: #389059;\n border-color: #358753; }\n .btn-success:focus, .btn-success.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5); }\n .btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #43ac6a;\n border-color: #43ac6a; }\n .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n .show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #358753;\n border-color: #317e4e; }\n .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n .show > .btn-success.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5); }\n\n.btn-info {\n color: #222;\n background-color: #5bc0de;\n border-color: #5bc0de; }\n .btn-info:hover {\n color: #fff;\n background-color: #3bb4d8;\n border-color: #31b0d5; }\n .btn-info:focus, .btn-info.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); }\n .btn-info.disabled, .btn-info:disabled {\n color: #222;\n background-color: #5bc0de;\n border-color: #5bc0de; }\n .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n .show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #31b0d5;\n border-color: #2aaacf; }\n .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n .show > .btn-info.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); }\n\n.btn-warning {\n color: #222;\n background-color: #E99002;\n border-color: #E99002; }\n .btn-warning:hover {\n color: #fff;\n background-color: #c37902;\n border-color: #b67102; }\n .btn-warning:focus, .btn-warning.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5); }\n .btn-warning.disabled, .btn-warning:disabled {\n color: #222;\n background-color: #E99002;\n border-color: #E99002; }\n .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n .show > .btn-warning.dropdown-toggle {\n color: #fff;\n background-color: #b67102;\n border-color: #aa6901; }\n .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n .show > .btn-warning.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5); }\n\n.btn-danger {\n color: #fff;\n background-color: #F04124;\n border-color: #F04124; }\n .btn-danger:hover {\n color: #fff;\n background-color: #df2d0f;\n border-color: #d32a0e; }\n .btn-danger:focus, .btn-danger.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5); }\n .btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #F04124;\n border-color: #F04124; }\n .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n .show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #d32a0e;\n border-color: #c7280e; }\n .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n .show > .btn-danger.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5); }\n\n.btn-light {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-light:hover {\n color: #222;\n background-color: #dbdbdb;\n border-color: #d5d5d5; }\n .btn-light:focus, .btn-light.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n .btn-light.disabled, .btn-light:disabled {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n .show > .btn-light.dropdown-toggle {\n color: #222;\n background-color: #d5d5d5;\n border-color: #cecece; }\n .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n .show > .btn-light.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n\n.btn-dark {\n color: #fff;\n background-color: #222;\n border-color: #222; }\n .btn-dark:hover {\n color: #fff;\n background-color: #0f0f0f;\n border-color: #090909; }\n .btn-dark:focus, .btn-dark.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5); }\n .btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #222;\n border-color: #222; }\n .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n .show > .btn-dark.dropdown-toggle {\n color: #fff;\n background-color: #090909;\n border-color: #020202; }\n .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n .show > .btn-dark.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5); }\n\n.btn-outline-primary {\n color: #008cba;\n background-color: transparent;\n background-image: none;\n border-color: #008cba; }\n .btn-outline-primary:hover {\n color: #fff;\n background-color: #008cba;\n border-color: #008cba; }\n .btn-outline-primary:focus, .btn-outline-primary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5); }\n .btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #008cba;\n background-color: transparent; }\n .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n .show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #008cba;\n border-color: #008cba; }\n .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-primary.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.5); }\n\n.btn-outline-secondary {\n color: #eee;\n background-color: transparent;\n background-image: none;\n border-color: #eee; }\n .btn-outline-secondary:hover {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-outline-secondary:focus, .btn-outline-secondary.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n .btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #eee;\n background-color: transparent; }\n .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n .show > .btn-outline-secondary.dropdown-toggle {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-secondary.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n\n.btn-outline-success {\n color: #43ac6a;\n background-color: transparent;\n background-image: none;\n border-color: #43ac6a; }\n .btn-outline-success:hover {\n color: #fff;\n background-color: #43ac6a;\n border-color: #43ac6a; }\n .btn-outline-success:focus, .btn-outline-success.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5); }\n .btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #43ac6a;\n background-color: transparent; }\n .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n .show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #43ac6a;\n border-color: #43ac6a; }\n .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-success.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(67, 172, 106, 0.5); }\n\n.btn-outline-info {\n color: #5bc0de;\n background-color: transparent;\n background-image: none;\n border-color: #5bc0de; }\n .btn-outline-info:hover {\n color: #222;\n background-color: #5bc0de;\n border-color: #5bc0de; }\n .btn-outline-info:focus, .btn-outline-info.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); }\n .btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #5bc0de;\n background-color: transparent; }\n .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n .show > .btn-outline-info.dropdown-toggle {\n color: #222;\n background-color: #5bc0de;\n border-color: #5bc0de; }\n .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-info.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); }\n\n.btn-outline-warning {\n color: #E99002;\n background-color: transparent;\n background-image: none;\n border-color: #E99002; }\n .btn-outline-warning:hover {\n color: #222;\n background-color: #E99002;\n border-color: #E99002; }\n .btn-outline-warning:focus, .btn-outline-warning.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5); }\n .btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #E99002;\n background-color: transparent; }\n .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n .show > .btn-outline-warning.dropdown-toggle {\n color: #222;\n background-color: #E99002;\n border-color: #E99002; }\n .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-warning.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(233, 144, 2, 0.5); }\n\n.btn-outline-danger {\n color: #F04124;\n background-color: transparent;\n background-image: none;\n border-color: #F04124; }\n .btn-outline-danger:hover {\n color: #fff;\n background-color: #F04124;\n border-color: #F04124; }\n .btn-outline-danger:focus, .btn-outline-danger.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5); }\n .btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #F04124;\n background-color: transparent; }\n .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n .show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #F04124;\n border-color: #F04124; }\n .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-danger.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(240, 65, 36, 0.5); }\n\n.btn-outline-light {\n color: #eee;\n background-color: transparent;\n background-image: none;\n border-color: #eee; }\n .btn-outline-light:hover {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-outline-light:focus, .btn-outline-light.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n .btn-outline-light.disabled, .btn-outline-light:disabled {\n color: #eee;\n background-color: transparent; }\n .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n .show > .btn-outline-light.dropdown-toggle {\n color: #222;\n background-color: #eee;\n border-color: #eee; }\n .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-light.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(238, 238, 238, 0.5); }\n\n.btn-outline-dark {\n color: #222;\n background-color: transparent;\n background-image: none;\n border-color: #222; }\n .btn-outline-dark:hover {\n color: #fff;\n background-color: #222;\n border-color: #222; }\n .btn-outline-dark:focus, .btn-outline-dark.focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5); }\n .btn-outline-dark.disabled, .btn-outline-dark:disabled {\n color: #222;\n background-color: transparent; }\n .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n .show > .btn-outline-dark.dropdown-toggle {\n color: #fff;\n background-color: #222;\n border-color: #222; }\n .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n .show > .btn-outline-dark.dropdown-toggle:focus {\n -webkit-box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5);\n box-shadow: 0 0 0 0.2rem rgba(34, 34, 34, 0.5); }\n\n.btn-link {\n font-weight: 400;\n color: #008cba;\n background-color: transparent; }\n .btn-link:hover {\n color: #00526e;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent; }\n .btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none; }\n .btn-link:disabled, .btn-link.disabled {\n color: #888; }\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.17188rem;\n line-height: 1.5;\n border-radius: 0; }\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.82031rem;\n line-height: 1.5;\n border-radius: 0; }\n\n.btn-block {\n display: block;\n width: 100%; }\n .btn-block + .btn-block {\n margin-top: 0.5rem; }\n\ninput[type="submit"].btn-block,\ninput[type="reset"].btn-block,\ninput[type="button"].btn-block {\n width: 100%; }\n\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear; }\n .fade.show {\n opacity: 1; }\n\n.collapse {\n display: none; }\n .collapse.show {\n display: block; }\n\ntr.collapse.show {\n display: table-row; }\n\ntbody.collapse.show {\n display: table-row-group; }\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition: height 0.35s ease;\n transition: height 0.35s ease; }\n\n.dropup,\n.dropdown {\n position: relative; }\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: "";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent; }\n\n.dropdown-toggle:empty::after {\n margin-left: 0; }\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 0.9375rem;\n color: #222;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 0; }\n\n.dropup .dropdown-menu {\n margin-top: 0;\n margin-bottom: 0.125rem; }\n\n.dropup .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: "";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent; }\n\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0; }\n\n.dropright .dropdown-menu {\n margin-top: 0;\n margin-left: 0.125rem; }\n\n.dropright .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: "";\n border-top: 0.3em solid transparent;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid; }\n\n.dropright .dropdown-toggle:empty::after {\n margin-left: 0; }\n\n.dropright .dropdown-toggle::after {\n vertical-align: 0; }\n\n.dropleft .dropdown-menu {\n margin-top: 0;\n margin-right: 0.125rem; }\n\n.dropleft .dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: ""; }\n\n.dropleft .dropdown-toggle::after {\n display: none; }\n\n.dropleft .dropdown-toggle::before {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: "";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent; }\n\n.dropleft .dropdown-toggle:empty::after {\n margin-left: 0; }\n\n.dropleft .dropdown-toggle::before {\n vertical-align: 0; }\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid rgba(0, 0, 0, 0.1); }\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: 400;\n color: #222;\n text-align: inherit;\n white-space: nowrap;\n background-color: transparent;\n border: 0; }\n .dropdown-item:hover, .dropdown-item:focus {\n color: #151515;\n text-decoration: none;\n background-color: #f8f9fa; }\n .dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #008cba; }\n .dropdown-item.disabled, .dropdown-item:disabled {\n color: #888;\n background-color: transparent; }\n\n.dropdown-menu.show {\n display: block; }\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.82031rem;\n color: #888;\n white-space: nowrap; }\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n vertical-align: middle; }\n .btn-group > .btn,\n .btn-group-vertical > .btn {\n position: relative;\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto; }\n .btn-group > .btn:hover,\n .btn-group-vertical > .btn:hover {\n z-index: 1; }\n .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n .btn-group-vertical > .btn:focus,\n .btn-group-vertical > .btn:active,\n .btn-group-vertical > .btn.active {\n z-index: 1; }\n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group,\n .btn-group-vertical .btn + .btn,\n .btn-group-vertical .btn + .btn-group,\n .btn-group-vertical .btn-group + .btn,\n .btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px; }\n\n.btn-toolbar {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .btn-toolbar .input-group {\n width: auto; }\n\n.btn-group > .btn:first-child {\n margin-left: 0; }\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n\n.dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem; }\n .dropdown-toggle-split::after {\n margin-left: 0; }\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem; }\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem; }\n\n.btn-group-vertical {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center; }\n .btn-group-vertical .btn,\n .btn-group-vertical .btn-group {\n width: 100%; }\n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0; }\n .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n .btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n .btn-group-vertical > .btn:not(:first-child),\n .btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n margin-bottom: 0; }\n .btn-group-toggle > .btn input[type="radio"],\n .btn-group-toggle > .btn input[type="checkbox"],\n .btn-group-toggle > .btn-group > .btn input[type="radio"],\n .btn-group-toggle > .btn-group > .btn input[type="checkbox"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none; }\n\n.input-group {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n width: 100%; }\n .input-group > .form-control,\n .input-group > .custom-select,\n .input-group > .custom-file {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0; }\n .input-group > .form-control:focus,\n .input-group > .custom-select:focus,\n .input-group > .custom-file:focus {\n z-index: 3; }\n .input-group > .form-control + .form-control,\n .input-group > .form-control + .custom-select,\n .input-group > .form-control + .custom-file,\n .input-group > .custom-select + .form-control,\n .input-group > .custom-select + .custom-select,\n .input-group > .custom-select + .custom-file,\n .input-group > .custom-file + .form-control,\n .input-group > .custom-file + .custom-select,\n .input-group > .custom-file + .custom-file {\n margin-left: -1px; }\n .input-group > .form-control:not(:last-child),\n .input-group > .custom-select:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .input-group > .form-control:not(:first-child),\n .input-group > .custom-select:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n .input-group > .custom-file {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .input-group > .custom-file:not(:last-child) .custom-file-label,\n .input-group > .custom-file:not(:last-child) .custom-file-label::before {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .input-group > .custom-file:not(:first-child) .custom-file-label,\n .input-group > .custom-file:not(:first-child) .custom-file-label::before {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n\n.input-group-prepend,\n.input-group-append {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex; }\n .input-group-prepend .btn,\n .input-group-append .btn {\n position: relative;\n z-index: 2; }\n .input-group-prepend .btn + .btn,\n .input-group-prepend .btn + .input-group-text,\n .input-group-prepend .input-group-text + .input-group-text,\n .input-group-prepend .input-group-text + .btn,\n .input-group-append .btn + .btn,\n .input-group-append .btn + .input-group-text,\n .input-group-append .input-group-text + .input-group-text,\n .input-group-append .input-group-text + .btn {\n margin-left: -1px; }\n\n.input-group-prepend {\n margin-right: -1px; }\n\n.input-group-append {\n margin-left: -1px; }\n\n.input-group-text {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n padding: 0.375rem 1rem;\n margin-bottom: 0;\n font-size: 0.9375rem;\n font-weight: 400;\n line-height: 1.5;\n color: #495057;\n text-align: center;\n white-space: nowrap;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 0; }\n .input-group-text input[type="radio"],\n .input-group-text input[type="checkbox"] {\n margin-top: 0; }\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n\n.custom-control {\n position: relative;\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5rem; }\n\n.custom-control-inline {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n margin-right: 1rem; }\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0; }\n .custom-control-input:checked ~ .custom-control-label::before {\n color: #fff;\n background-color: #008cba; }\n .custom-control-input:focus ~ .custom-control-label::before {\n -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 140, 186, 0.25);\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 140, 186, 0.25); }\n .custom-control-input:active ~ .custom-control-label::before {\n color: #fff;\n background-color: #6edbff; }\n .custom-control-input:disabled ~ .custom-control-label {\n color: #888; }\n .custom-control-input:disabled ~ .custom-control-label::before {\n background-color: #eee; }\n\n.custom-control-label {\n margin-bottom: 0; }\n .custom-control-label::before {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n content: "";\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: #dee2e6; }\n .custom-control-label::after {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n content: "";\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%; }\n\n.custom-checkbox .custom-control-label::before {\n border-radius: 0; }\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #008cba; }\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3E%3Cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3E%3C/svg%3E"); }\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n background-color: #008cba; }\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 4 4\'%3E%3Cpath stroke=\'%23fff\' d=\'M0 2h4\'/%3E%3C/svg%3E"); }\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 140, 186, 0.5); }\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n background-color: rgba(0, 140, 186, 0.5); }\n\n.custom-radio .custom-control-label::before {\n border-radius: 50%; }\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n background-color: #008cba; }\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'%3E%3Ccircle r=\'3\' fill=\'%23fff\'/%3E%3C/svg%3E"); }\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n background-color: rgba(0, 140, 186, 0.5); }\n\n.custom-select {\n display: inline-block;\n width: 100%;\n height: calc(2.15625rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.5;\n color: #495057;\n vertical-align: middle;\n background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 4 5\'%3E%3Cpath fill=\'%23333\' d=\'M2 0L0 2h4zm0 5L0 3h4z\'/%3E%3C/svg%3E") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid #ccc;\n border-radius: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none; }\n .custom-select:focus {\n border-color: #3bceff;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(59, 206, 255, 0.5);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(59, 206, 255, 0.5); }\n .custom-select:focus::-ms-value {\n color: #495057;\n background-color: #fff; }\n .custom-select[multiple], .custom-select[size]:not([size="1"]) {\n height: auto;\n padding-right: 0.75rem;\n background-image: none; }\n .custom-select:disabled {\n color: #888;\n background-color: #eee; }\n .custom-select::-ms-expand {\n opacity: 0; }\n\n.custom-select-sm {\n height: calc(1.73047rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%; }\n\n.custom-select-lg {\n height: calc(2.75781rem + 2px);\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 125%; }\n\n.custom-file {\n position: relative;\n display: inline-block;\n width: 100%;\n height: calc(2.15625rem + 2px);\n margin-bottom: 0; }\n\n.custom-file-input {\n position: relative;\n z-index: 2;\n width: 100%;\n height: calc(2.15625rem + 2px);\n margin: 0;\n opacity: 0; }\n .custom-file-input:focus ~ .custom-file-control {\n border-color: #3bceff;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25); }\n .custom-file-input:focus ~ .custom-file-control::before {\n border-color: #3bceff; }\n .custom-file-input:lang(en) ~ .custom-file-label::after {\n content: "Browse"; }\n\n.custom-file-label {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1;\n height: calc(2.15625rem + 2px);\n padding: 0.375rem 1rem;\n line-height: 1.5;\n color: #495057;\n background-color: #fff;\n border: 1px solid #ccc;\n border-radius: 0; }\n .custom-file-label::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n display: block;\n height: calc(calc(2.15625rem + 2px) - 1px * 2);\n padding: 0.375rem 1rem;\n line-height: 1.5;\n color: #495057;\n content: "Browse";\n background-color: #eee;\n border-left: 1px solid #ccc;\n border-radius: 0 0 0 0; }\n\n.nav {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none; }\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem; }\n .nav-link:hover, .nav-link:focus {\n text-decoration: none; }\n .nav-link.disabled {\n color: #ccc; }\n\n.nav-tabs {\n border-bottom: 1px solid rgba(0, 0, 0, 0.1); }\n .nav-tabs .nav-item {\n margin-bottom: -1px; }\n .nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n border-color: rgba(0, 0, 0, 0.1); }\n .nav-tabs .nav-link.disabled {\n color: #ccc;\n background-color: transparent;\n border-color: transparent; }\n .nav-tabs .nav-link.active,\n .nav-tabs .nav-item.show .nav-link {\n color: #495057;\n background-color: #fff;\n border-color: rgba(0, 0, 0, 0.1); }\n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n\n.nav-pills .nav-link {\n border-radius: 0; }\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: #fff;\n background-color: #008cba; }\n\n.nav-fill .nav-item {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n text-align: center; }\n\n.nav-justified .nav-item {\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n text-align: center; }\n\n.tab-content > .tab-pane {\n display: none; }\n\n.tab-content > .active {\n display: block; }\n\n.navbar {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 0.5rem 1rem; }\n .navbar > .container,\n .navbar > .container-fluid {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.32422rem;\n padding-bottom: 0.32422rem;\n margin-right: 1rem;\n font-size: 1.17188rem;\n line-height: inherit;\n white-space: nowrap; }\n .navbar-brand:hover, .navbar-brand:focus {\n text-decoration: none; }\n\n.navbar-nav {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none; }\n .navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0; }\n .navbar-nav .dropdown-menu {\n position: static;\n float: none; }\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem; }\n\n.navbar-collapse {\n -ms-flex-preferred-size: 100%;\n flex-basis: 100%;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.17188rem;\n line-height: 1;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0; }\n .navbar-toggler:hover, .navbar-toggler:focus {\n text-decoration: none; }\n .navbar-toggler:not(:disabled):not(.disabled) {\n cursor: pointer; }\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: "";\n background: no-repeat center center;\n background-size: 100% 100%; }\n\n@media (max-width: 575.98px) {\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-sm .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-sm .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem; }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-sm .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-sm .navbar-toggler {\n display: none; }\n .navbar-expand-sm .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n\n@media (max-width: 767.98px) {\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-md .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-md .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem; }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-md .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-md .navbar-toggler {\n display: none; }\n .navbar-expand-md .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n\n@media (max-width: 991.98px) {\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-lg .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-lg .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem; }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-lg .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-lg .navbar-toggler {\n display: none; }\n .navbar-expand-lg .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n\n@media (max-width: 1199.98px) {\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0; } }\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand-xl .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand-xl .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem; }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand-xl .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand-xl .navbar-toggler {\n display: none; }\n .navbar-expand-xl .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; } }\n\n.navbar-expand {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row nowrap;\n flex-flow: row nowrap;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start; }\n .navbar-expand > .container,\n .navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0; }\n .navbar-expand .navbar-nav {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row; }\n .navbar-expand .navbar-nav .dropdown-menu {\n position: absolute; }\n .navbar-expand .navbar-nav .dropdown-menu-right {\n right: 0;\n left: auto; }\n .navbar-expand .navbar-nav .nav-link {\n padding-right: 0.5rem;\n padding-left: 0.5rem; }\n .navbar-expand > .container,\n .navbar-expand > .container-fluid {\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap; }\n .navbar-expand .navbar-collapse {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important;\n -ms-flex-preferred-size: auto;\n flex-basis: auto; }\n .navbar-expand .navbar-toggler {\n display: none; }\n .navbar-expand .dropup .dropdown-menu {\n top: auto;\n bottom: 100%; }\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9); }\n .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n color: rgba(0, 0, 0, 0.9); }\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5); }\n .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n color: rgba(0, 0, 0, 0.7); }\n .navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3); }\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9); }\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1); }\n\n.navbar-light .navbar-toggler-icon {\n background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox=\'0 0 30 30\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cpath stroke=\'rgba(0, 0, 0, 0.5)\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-miterlimit=\'10\' d=\'M4 7h22M4 15h22M4 23h22\'/%3E%3C/svg%3E"); }\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5); }\n .navbar-light .navbar-text a {\n color: rgba(0, 0, 0, 0.9); }\n .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n color: rgba(0, 0, 0, 0.9); }\n\n.navbar-dark .navbar-brand {\n color: #fff; }\n .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n color: #fff; }\n\n.navbar-dark .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.7); }\n .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n color: #fff; }\n .navbar-dark .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25); }\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n color: #fff; }\n\n.navbar-dark .navbar-toggler {\n color: rgba(255, 255, 255, 0.7);\n border-color: rgba(255, 255, 255, 0.1); }\n\n.navbar-dark .navbar-toggler-icon {\n background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox=\'0 0 30 30\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cpath stroke=\'rgba(255, 255, 255, 0.7)\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-miterlimit=\'10\' d=\'M4 7h22M4 15h22M4 23h22\'/%3E%3C/svg%3E"); }\n\n.navbar-dark .navbar-text {\n color: rgba(255, 255, 255, 0.7); }\n .navbar-dark .navbar-text a {\n color: #fff; }\n .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n color: #fff; }\n\n.card {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0; }\n .card > hr {\n margin-right: 0;\n margin-left: 0; }\n .card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n .card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n\n.card-body {\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem; }\n\n.card-title {\n margin-bottom: 0.75rem; }\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0; }\n\n.card-text:last-child {\n margin-bottom: 0; }\n\n.card-link:hover {\n text-decoration: none; }\n\n.card-link + .card-link {\n margin-left: 1.25rem; }\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125); }\n .card-header:first-child {\n border-radius: calc(0 - 1px) calc(0 - 1px) 0 0; }\n .card-header + .list-group .list-group-item:first-child {\n border-top: 0; }\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125); }\n .card-footer:last-child {\n border-radius: 0 0 calc(0 - 1px) calc(0 - 1px); }\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0; }\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem; }\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem; }\n\n.card-img {\n width: 100%;\n border-radius: calc(0 - 1px); }\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0 - 1px);\n border-top-right-radius: calc(0 - 1px); }\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0 - 1px);\n border-bottom-left-radius: calc(0 - 1px); }\n\n.card-deck {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column; }\n .card-deck .card {\n margin-bottom: 15px; }\n @media (min-width: 576px) {\n .card-deck {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px; }\n .card-deck .card {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-flex: 1;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px; } }\n\n.card-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column; }\n .card-group > .card {\n margin-bottom: 15px; }\n @media (min-width: 576px) {\n .card-group {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-flow: row wrap;\n flex-flow: row wrap; }\n .card-group > .card {\n -webkit-box-flex: 1;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0; }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0; }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0; }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0; }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0; }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0; }\n .card-group > .card:only-child {\n border-radius: 0; }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0; }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0; } }\n\n.card-columns .card {\n margin-bottom: 0.75rem; }\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n column-gap: 1.25rem; }\n .card-columns .card {\n display: inline-block;\n width: 100%; } }\n\n.breadcrumb {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #eee;\n border-radius: 0; }\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #888;\n content: "/"; }\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline; }\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none; }\n\n.breadcrumb-item.active {\n color: #888; }\n\n.pagination {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0; }\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #888;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.1); }\n .page-link:hover {\n color: #00526e;\n text-decoration: none;\n background-color: #eee;\n border-color: #dee2e6; }\n .page-link:focus {\n z-index: 2;\n outline: 0;\n -webkit-box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25);\n box-shadow: 0 0 0 0.2rem rgba(0, 140, 186, 0.25); }\n .page-link:not(:disabled):not(.disabled) {\n cursor: pointer; }\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n\n.page-item.active .page-link {\n z-index: 1;\n color: #fff;\n background-color: #008cba;\n border-color: #0079a1; }\n\n.page-item.disabled .page-link {\n color: #eee;\n pointer-events: none;\n cursor: auto;\n background-color: #fff;\n border-color: #dee2e6; }\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.17188rem;\n line-height: 1.5; }\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.82031rem;\n line-height: 1.5; }\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0; }\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n\n.badge {\n display: inline-block;\n padding: 0.25em 1rem;\n font-size: 75%;\n font-weight: 300;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0; }\n .badge:empty {\n display: none; }\n\n.btn .badge {\n position: relative;\n top: -1px; }\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem; }\n\n.badge-primary {\n color: #fff;\n background-color: #008cba; }\n .badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #006687; }\n\n.badge-secondary {\n color: #222;\n background-color: #eee; }\n .badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #222;\n text-decoration: none;\n background-color: #d5d5d5; }\n\n.badge-success {\n color: #fff;\n background-color: #43ac6a; }\n .badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #358753; }\n\n.badge-info {\n color: #222;\n background-color: #5bc0de; }\n .badge-info[href]:hover, .badge-info[href]:focus {\n color: #222;\n text-decoration: none;\n background-color: #31b0d5; }\n\n.badge-warning {\n color: #222;\n background-color: #E99002; }\n .badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #222;\n text-decoration: none;\n background-color: #b67102; }\n\n.badge-danger {\n color: #fff;\n background-color: #F04124; }\n .badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #d32a0e; }\n\n.badge-light {\n color: #222;\n background-color: #eee; }\n .badge-light[href]:hover, .badge-light[href]:focus {\n color: #222;\n text-decoration: none;\n background-color: #d5d5d5; }\n\n.badge-dark {\n color: #fff;\n background-color: #222; }\n .badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #090909; }\n\n.jumbotron {\n padding: 4rem 2rem;\n margin-bottom: 4rem;\n background-color: #eee;\n border-radius: 0; }\n @media (min-width: 576px) {\n .jumbotron {\n padding: 8rem 4rem; } }\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0; }\n\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0; }\n\n.alert-heading {\n color: inherit; }\n\n.alert-link {\n font-weight: 700; }\n\n.alert-dismissible {\n padding-right: 3.90625rem; }\n .alert-dismissible .close {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.75rem 1.25rem;\n color: inherit; }\n\n.alert-primary {\n color: #004961;\n background-color: #cce8f1;\n border-color: #b8dfec; }\n .alert-primary hr {\n border-top-color: #a4d6e7; }\n .alert-primary .alert-link {\n color: #00232e; }\n\n.alert-secondary {\n color: #7c7c7c;\n background-color: #fcfcfc;\n border-color: #fafafa; }\n .alert-secondary hr {\n border-top-color: #ededed; }\n .alert-secondary .alert-link {\n color: #636363; }\n\n.alert-success {\n color: #235937;\n background-color: #d9eee1;\n border-color: #cae8d5; }\n .alert-success hr {\n border-top-color: #b8e0c7; }\n .alert-success .alert-link {\n color: #153420; }\n\n.alert-info {\n color: #2f6473;\n background-color: #def2f8;\n border-color: #d1edf6; }\n .alert-info hr {\n border-top-color: #bce5f2; }\n .alert-info .alert-link {\n color: #20454f; }\n\n.alert-warning {\n color: #794b01;\n background-color: #fbe9cc;\n border-color: #f9e0b8; }\n .alert-warning hr {\n border-top-color: #f7d6a0; }\n .alert-warning .alert-link {\n color: #462c01; }\n\n.alert-danger {\n color: #7d2213;\n background-color: #fcd9d3;\n border-color: #fbcac2; }\n .alert-danger hr {\n border-top-color: #f9b5aa; }\n .alert-danger .alert-link {\n color: #51160c; }\n\n.alert-light {\n color: #7c7c7c;\n background-color: #fcfcfc;\n border-color: #fafafa; }\n .alert-light hr {\n border-top-color: #ededed; }\n .alert-light .alert-link {\n color: #636363; }\n\n.alert-dark {\n color: #121212;\n background-color: lightgray;\n border-color: #c1c1c1; }\n .alert-dark hr {\n border-top-color: #b4b4b4; }\n .alert-dark .alert-link {\n color: black; }\n\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0; }\n to {\n background-position: 0 0; } }\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0; }\n to {\n background-position: 0 0; } }\n\n.progress {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n height: 1rem;\n overflow: hidden;\n font-size: 0.70313rem;\n background-color: #f6f6f6;\n border-radius: 0; }\n\n.progress-bar {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n color: #008cba;\n text-align: center;\n background-color: #008cba;\n -webkit-transition: width 0.6s ease;\n transition: width 0.6s ease; }\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem; }\n\n.progress-bar-animated {\n -webkit-animation: progress-bar-stripes 1s linear infinite;\n animation: progress-bar-stripes 1s linear infinite; }\n\n.media {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start; }\n\n.media-body {\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1; }\n\n.list-group {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0; }\n\n.list-group-item-action {\n width: 100%;\n color: #495057;\n text-align: inherit; }\n .list-group-item-action:hover, .list-group-item-action:focus {\n color: #495057;\n text-decoration: none;\n background-color: #f8f9fa; }\n .list-group-item-action:active {\n color: #222;\n background-color: #eee; }\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125); }\n .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0; }\n .list-group-item:hover, .list-group-item:focus {\n z-index: 1;\n text-decoration: none; }\n .list-group-item.disabled, .list-group-item:disabled {\n color: #888;\n background-color: #eee; }\n .list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #008cba;\n border-color: #008cba; }\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0; }\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0; }\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0; }\n\n.list-group-item-primary {\n color: #004961;\n background-color: #b8dfec; }\n .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n color: #004961;\n background-color: #a4d6e7; }\n .list-group-item-primary.list-group-item-action.active {\n color: #fff;\n background-color: #004961;\n border-color: #004961; }\n\n.list-group-item-secondary {\n color: #7c7c7c;\n background-color: #fafafa; }\n .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n color: #7c7c7c;\n background-color: #ededed; }\n .list-group-item-secondary.list-group-item-action.active {\n color: #fff;\n background-color: #7c7c7c;\n border-color: #7c7c7c; }\n\n.list-group-item-success {\n color: #235937;\n background-color: #cae8d5; }\n .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n color: #235937;\n background-color: #b8e0c7; }\n .list-group-item-success.list-group-item-action.active {\n color: #fff;\n background-color: #235937;\n border-color: #235937; }\n\n.list-group-item-info {\n color: #2f6473;\n background-color: #d1edf6; }\n .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n color: #2f6473;\n background-color: #bce5f2; }\n .list-group-item-info.list-group-item-action.active {\n color: #fff;\n background-color: #2f6473;\n border-color: #2f6473; }\n\n.list-group-item-warning {\n color: #794b01;\n background-color: #f9e0b8; }\n .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n color: #794b01;\n background-color: #f7d6a0; }\n .list-group-item-warning.list-group-item-action.active {\n color: #fff;\n background-color: #794b01;\n border-color: #794b01; }\n\n.list-group-item-danger {\n color: #7d2213;\n background-color: #fbcac2; }\n .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n color: #7d2213;\n background-color: #f9b5aa; }\n .list-group-item-danger.list-group-item-action.active {\n color: #fff;\n background-color: #7d2213;\n border-color: #7d2213; }\n\n.list-group-item-light {\n color: #7c7c7c;\n background-color: #fafafa; }\n .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n color: #7c7c7c;\n background-color: #ededed; }\n .list-group-item-light.list-group-item-action.active {\n color: #fff;\n background-color: #7c7c7c;\n border-color: #7c7c7c; }\n\n.list-group-item-dark {\n color: #121212;\n background-color: #c1c1c1; }\n .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n color: #121212;\n background-color: #b4b4b4; }\n .list-group-item-dark.list-group-item-action.active {\n color: #fff;\n background-color: #121212;\n border-color: #121212; }\n\n.close {\n float: right;\n font-size: 1.40625rem;\n font-weight: 700;\n line-height: 1;\n color: #888;\n text-shadow: none;\n opacity: .5; }\n .close:hover, .close:focus {\n color: #888;\n text-decoration: none;\n opacity: .75; }\n .close:not(:disabled):not(.disabled) {\n cursor: pointer; }\n\nbutton.close {\n padding: 0;\n background-color: transparent;\n border: 0;\n -webkit-appearance: none; }\n\n.modal-open {\n overflow: hidden; }\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0; }\n .modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto; }\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 0.5rem;\n pointer-events: none; }\n .modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform 0.3s ease-out;\n transition: -webkit-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n transform: translate(0, -25%); }\n .modal.show .modal-dialog {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0); }\n\n.modal-dialog-centered {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n min-height: calc(100% - (0.5rem * 2)); }\n\n.modal-content {\n position: relative;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0;\n outline: 0; }\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000; }\n .modal-backdrop.fade {\n opacity: 0; }\n .modal-backdrop.show {\n opacity: 0.5; }\n\n.modal-header {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid #eee;\n border-top-left-radius: 0;\n border-top-right-radius: 0; }\n .modal-header .close {\n padding: 1rem;\n margin: -1rem -1rem -1rem auto; }\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5; }\n\n.modal-body {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1rem; }\n\n.modal-footer {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: flex-end;\n padding: 1rem;\n border-top: 1px solid #eee; }\n .modal-footer > :not(:first-child) {\n margin-left: .25rem; }\n .modal-footer > :not(:last-child) {\n margin-right: .25rem; }\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll; }\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 1.75rem auto; }\n .modal-dialog-centered {\n min-height: calc(100% - (1.75rem * 2)); }\n .modal-sm {\n max-width: 300px; } }\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px; } }\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n margin: 0;\n font-family: "Roboto", "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.82031rem;\n word-wrap: break-word;\n opacity: 0; }\n .tooltip.show {\n opacity: 0.9; }\n .tooltip .arrow {\n position: absolute;\n display: block;\n width: 0.8rem;\n height: 0.4rem; }\n .tooltip .arrow::before {\n position: absolute;\n content: "";\n border-color: transparent;\n border-style: solid; }\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] {\n padding: 0.4rem 0; }\n .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow {\n bottom: 0; }\n .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {\n top: 0;\n border-width: 0.4rem 0.4rem 0;\n border-top-color: #000; }\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] {\n padding: 0 0.4rem; }\n .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow {\n left: 0;\n width: 0.4rem;\n height: 0.8rem; }\n .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before {\n right: 0;\n border-width: 0.4rem 0.4rem 0.4rem 0;\n border-right-color: #000; }\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] {\n padding: 0.4rem 0; }\n .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow {\n top: 0; }\n .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {\n bottom: 0;\n border-width: 0 0.4rem 0.4rem;\n border-bottom-color: #000; }\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] {\n padding: 0 0.4rem; }\n .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow {\n right: 0;\n width: 0.4rem;\n height: 0.8rem; }\n .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before {\n left: 0;\n border-width: 0.4rem 0 0.4rem 0.4rem;\n border-left-color: #000; }\n\n.tooltip-inner {\n max-width: 200px;\n padding: 0.25rem 0.5rem;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0; }\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n font-family: "Roboto", "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.82031rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0; }\n .popover .arrow {\n position: absolute;\n display: block;\n width: 1rem;\n height: 0.5rem;\n margin: 0 0; }\n .popover .arrow::before, .popover .arrow::after {\n position: absolute;\n display: block;\n content: "";\n border-color: transparent;\n border-style: solid; }\n\n.bs-popover-top, .bs-popover-auto[x-placement^="top"] {\n margin-bottom: 0.5rem; }\n .bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow {\n bottom: calc((0.5rem + 1px) * -1); }\n .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before,\n .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after {\n border-width: 0.5rem 0.5rem 0; }\n .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before {\n bottom: 0;\n border-top-color: rgba(0, 0, 0, 0.25); }\n .bs-popover-top .arrow::after, .bs-popover-auto[x-placement^="top"] .arrow::after {\n bottom: 1px;\n border-top-color: #fff; }\n\n.bs-popover-right, .bs-popover-auto[x-placement^="right"] {\n margin-left: 0.5rem; }\n .bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow {\n left: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0 0; }\n .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before,\n .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after {\n border-width: 0.5rem 0.5rem 0.5rem 0; }\n .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before {\n left: 0;\n border-right-color: rgba(0, 0, 0, 0.25); }\n .bs-popover-right .arrow::after, .bs-popover-auto[x-placement^="right"] .arrow::after {\n left: 1px;\n border-right-color: #fff; }\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] {\n margin-top: 0.5rem; }\n .bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow {\n top: calc((0.5rem + 1px) * -1); }\n .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before,\n .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after {\n border-width: 0 0.5rem 0.5rem 0.5rem; }\n .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before {\n top: 0;\n border-bottom-color: rgba(0, 0, 0, 0.25); }\n .bs-popover-bottom .arrow::after, .bs-popover-auto[x-placement^="bottom"] .arrow::after {\n top: 1px;\n border-bottom-color: #fff; }\n .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 1rem;\n margin-left: -0.5rem;\n content: "";\n border-bottom: 1px solid #f7f7f7; }\n\n.bs-popover-left, .bs-popover-auto[x-placement^="left"] {\n margin-right: 0.5rem; }\n .bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow {\n right: calc((0.5rem + 1px) * -1);\n width: 0.5rem;\n height: 1rem;\n margin: 0 0; }\n .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before,\n .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after {\n border-width: 0.5rem 0 0.5rem 0.5rem; }\n .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before {\n right: 0;\n border-left-color: rgba(0, 0, 0, 0.25); }\n .bs-popover-left .arrow::after, .bs-popover-auto[x-placement^="left"] .arrow::after {\n right: 1px;\n border-left-color: #fff; }\n\n.popover-header {\n padding: 0.5rem 0.75rem;\n margin-bottom: 0;\n font-size: 0.9375rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0 - 1px);\n border-top-right-radius: calc(0 - 1px); }\n .popover-header:empty {\n display: none; }\n\n.popover-body {\n padding: 0.5rem 0.75rem;\n color: #222; }\n\n.carousel {\n position: relative; }\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden; }\n\n.carousel-item {\n position: relative;\n display: none;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n -webkit-transition: -webkit-transform 0.6s ease;\n transition: -webkit-transform 0.6s ease;\n transition: transform 0.6s ease;\n transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px; }\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block; }\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0; }\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n -webkit-transform: translateX(0);\n transform: translateX(0); }\n @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0); } }\n\n.carousel-item-next,\n.active.carousel-item-right {\n -webkit-transform: translateX(100%);\n transform: translateX(100%); }\n @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-next,\n .active.carousel-item-right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0); } }\n\n.carousel-item-prev,\n.active.carousel-item-left {\n -webkit-transform: translateX(-100%);\n transform: translateX(-100%); }\n @supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n .carousel-item-prev,\n .active.carousel-item-left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0); } }\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5; }\n .carousel-control-prev:hover, .carousel-control-prev:focus,\n .carousel-control-next:hover,\n .carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9; }\n\n.carousel-control-prev {\n left: 0; }\n\n.carousel-control-next {\n right: 0; }\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%; }\n\n.carousel-control-prev-icon {\n background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' fill=\'%23fff\' viewBox=\'0 0 8 8\'%3E%3Cpath d=\'M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z\'/%3E%3C/svg%3E"); }\n\n.carousel-control-next-icon {\n background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' fill=\'%23fff\' viewBox=\'0 0 8 8\'%3E%3Cpath d=\'M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z\'/%3E%3C/svg%3E"); }\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none; }\n .carousel-indicators li {\n position: relative;\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5); }\n .carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: ""; }\n .carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: ""; }\n .carousel-indicators .active {\n background-color: #fff; }\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center; }\n\n.align-baseline {\n vertical-align: baseline !important; }\n\n.align-top {\n vertical-align: top !important; }\n\n.align-middle {\n vertical-align: middle !important; }\n\n.align-bottom {\n vertical-align: bottom !important; }\n\n.align-text-bottom {\n vertical-align: text-bottom !important; }\n\n.align-text-top {\n vertical-align: text-top !important; }\n\n.bg-primary {\n background-color: #008cba !important; }\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #006687 !important; }\n\n.bg-secondary {\n background-color: #eee !important; }\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #d5d5d5 !important; }\n\n.bg-success {\n background-color: #43ac6a !important; }\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #358753 !important; }\n\n.bg-info {\n background-color: #5bc0de !important; }\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #31b0d5 !important; }\n\n.bg-warning {\n background-color: #E99002 !important; }\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #b67102 !important; }\n\n.bg-danger {\n background-color: #F04124 !important; }\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #d32a0e !important; }\n\n.bg-light {\n background-color: #eee !important; }\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #d5d5d5 !important; }\n\n.bg-dark {\n background-color: #222 !important; }\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #090909 !important; }\n\n.bg-white {\n background-color: #fff !important; }\n\n.bg-transparent {\n background-color: transparent !important; }\n\n.border {\n border: 1px solid #dee2e6 !important; }\n\n.border-top {\n border-top: 1px solid #dee2e6 !important; }\n\n.border-right {\n border-right: 1px solid #dee2e6 !important; }\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important; }\n\n.border-left {\n border-left: 1px solid #dee2e6 !important; }\n\n.border-0 {\n border: 0 !important; }\n\n.border-top-0 {\n border-top: 0 !important; }\n\n.border-right-0 {\n border-right: 0 !important; }\n\n.border-bottom-0 {\n border-bottom: 0 !important; }\n\n.border-left-0 {\n border-left: 0 !important; }\n\n.border-primary {\n border-color: #008cba !important; }\n\n.border-secondary {\n border-color: #eee !important; }\n\n.border-success {\n border-color: #43ac6a !important; }\n\n.border-info {\n border-color: #5bc0de !important; }\n\n.border-warning {\n border-color: #E99002 !important; }\n\n.border-danger {\n border-color: #F04124 !important; }\n\n.border-light {\n border-color: #eee !important; }\n\n.border-dark {\n border-color: #222 !important; }\n\n.border-white {\n border-color: #fff !important; }\n\n.rounded {\n border-radius: 0 !important; }\n\n.rounded-top {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important; }\n\n.rounded-right {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important; }\n\n.rounded-bottom {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important; }\n\n.rounded-left {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important; }\n\n.rounded-circle {\n border-radius: 50% !important; }\n\n.rounded-0 {\n border-radius: 0 !important; }\n\n.clearfix::after {\n display: block;\n clear: both;\n content: ""; }\n\n.d-none {\n display: none !important; }\n\n.d-inline {\n display: inline !important; }\n\n.d-inline-block {\n display: inline-block !important; }\n\n.d-block {\n display: block !important; }\n\n.d-table {\n display: table !important; }\n\n.d-table-row {\n display: table-row !important; }\n\n.d-table-cell {\n display: table-cell !important; }\n\n.d-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n\n.d-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; }\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important; }\n .d-sm-inline {\n display: inline !important; }\n .d-sm-inline-block {\n display: inline-block !important; }\n .d-sm-block {\n display: block !important; }\n .d-sm-table {\n display: table !important; }\n .d-sm-table-row {\n display: table-row !important; }\n .d-sm-table-cell {\n display: table-cell !important; }\n .d-sm-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-sm-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important; }\n .d-md-inline {\n display: inline !important; }\n .d-md-inline-block {\n display: inline-block !important; }\n .d-md-block {\n display: block !important; }\n .d-md-table {\n display: table !important; }\n .d-md-table-row {\n display: table-row !important; }\n .d-md-table-cell {\n display: table-cell !important; }\n .d-md-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-md-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important; }\n .d-lg-inline {\n display: inline !important; }\n .d-lg-inline-block {\n display: inline-block !important; }\n .d-lg-block {\n display: block !important; }\n .d-lg-table {\n display: table !important; }\n .d-lg-table-row {\n display: table-row !important; }\n .d-lg-table-cell {\n display: table-cell !important; }\n .d-lg-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-lg-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important; }\n .d-xl-inline {\n display: inline !important; }\n .d-xl-inline-block {\n display: inline-block !important; }\n .d-xl-block {\n display: block !important; }\n .d-xl-table {\n display: table !important; }\n .d-xl-table-row {\n display: table-row !important; }\n .d-xl-table-cell {\n display: table-cell !important; }\n .d-xl-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-xl-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n\n@media print {\n .d-print-none {\n display: none !important; }\n .d-print-inline {\n display: inline !important; }\n .d-print-inline-block {\n display: inline-block !important; }\n .d-print-block {\n display: block !important; }\n .d-print-table {\n display: table !important; }\n .d-print-table-row {\n display: table-row !important; }\n .d-print-table-cell {\n display: table-cell !important; }\n .d-print-flex {\n display: -webkit-box !important;\n display: -ms-flexbox !important;\n display: flex !important; }\n .d-print-inline-flex {\n display: -webkit-inline-box !important;\n display: -ms-inline-flexbox !important;\n display: inline-flex !important; } }\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden; }\n .embed-responsive::before {\n display: block;\n content: ""; }\n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object,\n .embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0; }\n\n.embed-responsive-21by9::before {\n padding-top: 42.85714%; }\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%; }\n\n.embed-responsive-4by3::before {\n padding-top: 75%; }\n\n.embed-responsive-1by1::before {\n padding-top: 100%; }\n\n.flex-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n\n.flex-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n\n.flex-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n\n.flex-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n\n.flex-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n\n.flex-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n\n.flex-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n\n.justify-content-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n\n.justify-content-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n\n.justify-content-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n\n.justify-content-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n\n.justify-content-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n\n.align-items-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n\n.align-items-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n\n.align-items-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n\n.align-items-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n\n.align-items-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n\n.align-content-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n\n.align-content-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n\n.align-content-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n\n.align-content-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n\n.align-content-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n\n.align-content-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n\n.align-self-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n\n.align-self-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n\n.align-self-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n\n.align-self-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n\n.align-self-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n\n.align-self-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; }\n\n@media (min-width: 576px) {\n .flex-sm-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-sm-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-sm-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-sm-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-sm-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-sm-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-sm-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-sm-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-sm-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-sm-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-sm-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-sm-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-sm-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-sm-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-sm-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-sm-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-sm-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-sm-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-sm-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-sm-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-sm-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-sm-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-sm-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-sm-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-sm-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-sm-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-sm-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-sm-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-sm-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n\n@media (min-width: 768px) {\n .flex-md-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-md-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-md-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-md-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-md-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-md-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-md-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-md-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-md-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-md-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-md-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-md-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-md-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-md-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-md-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-md-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-md-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-md-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-md-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-md-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-md-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-md-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-md-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-md-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-md-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-md-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-md-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-md-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-md-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n\n@media (min-width: 992px) {\n .flex-lg-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-lg-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-lg-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-lg-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-lg-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-lg-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-lg-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-lg-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-lg-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-lg-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-lg-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-lg-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-lg-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-lg-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-lg-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-lg-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-lg-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-lg-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-lg-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-lg-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-lg-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-lg-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-lg-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-lg-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-lg-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-lg-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-lg-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-lg-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-lg-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n\n@media (min-width: 1200px) {\n .flex-xl-row {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: row !important;\n flex-direction: row !important; }\n .flex-xl-column {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: normal !important;\n -ms-flex-direction: column !important;\n flex-direction: column !important; }\n .flex-xl-row-reverse {\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: row-reverse !important;\n flex-direction: row-reverse !important; }\n .flex-xl-column-reverse {\n -webkit-box-orient: vertical !important;\n -webkit-box-direction: reverse !important;\n -ms-flex-direction: column-reverse !important;\n flex-direction: column-reverse !important; }\n .flex-xl-wrap {\n -ms-flex-wrap: wrap !important;\n flex-wrap: wrap !important; }\n .flex-xl-nowrap {\n -ms-flex-wrap: nowrap !important;\n flex-wrap: nowrap !important; }\n .flex-xl-wrap-reverse {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important; }\n .justify-content-xl-start {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important; }\n .justify-content-xl-end {\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important; }\n .justify-content-xl-center {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important; }\n .justify-content-xl-between {\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important; }\n .justify-content-xl-around {\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important; }\n .align-items-xl-start {\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important; }\n .align-items-xl-end {\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important; }\n .align-items-xl-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important; }\n .align-items-xl-baseline {\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important; }\n .align-items-xl-stretch {\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important; }\n .align-content-xl-start {\n -ms-flex-line-pack: start !important;\n align-content: flex-start !important; }\n .align-content-xl-end {\n -ms-flex-line-pack: end !important;\n align-content: flex-end !important; }\n .align-content-xl-center {\n -ms-flex-line-pack: center !important;\n align-content: center !important; }\n .align-content-xl-between {\n -ms-flex-line-pack: justify !important;\n align-content: space-between !important; }\n .align-content-xl-around {\n -ms-flex-line-pack: distribute !important;\n align-content: space-around !important; }\n .align-content-xl-stretch {\n -ms-flex-line-pack: stretch !important;\n align-content: stretch !important; }\n .align-self-xl-auto {\n -ms-flex-item-align: auto !important;\n align-self: auto !important; }\n .align-self-xl-start {\n -ms-flex-item-align: start !important;\n align-self: flex-start !important; }\n .align-self-xl-end {\n -ms-flex-item-align: end !important;\n align-self: flex-end !important; }\n .align-self-xl-center {\n -ms-flex-item-align: center !important;\n align-self: center !important; }\n .align-self-xl-baseline {\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important; }\n .align-self-xl-stretch {\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important; } }\n\n.float-left {\n float: left !important; }\n\n.float-right {\n float: right !important; }\n\n.float-none {\n float: none !important; }\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important; }\n .float-sm-right {\n float: right !important; }\n .float-sm-none {\n float: none !important; } }\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important; }\n .float-md-right {\n float: right !important; }\n .float-md-none {\n float: none !important; } }\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important; }\n .float-lg-right {\n float: right !important; }\n .float-lg-none {\n float: none !important; } }\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important; }\n .float-xl-right {\n float: right !important; }\n .float-xl-none {\n float: none !important; } }\n\n.position-static {\n position: static !important; }\n\n.position-relative {\n position: relative !important; }\n\n.position-absolute {\n position: absolute !important; }\n\n.position-fixed {\n position: fixed !important; }\n\n.position-sticky {\n position: -webkit-sticky !important;\n position: sticky !important; }\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030; }\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030; }\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n .sticky-top {\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 1020; } }\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n border: 0; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n -webkit-clip-path: none;\n clip-path: none; }\n\n.w-25 {\n width: 25% !important; }\n\n.w-50 {\n width: 50% !important; }\n\n.w-75 {\n width: 75% !important; }\n\n.w-100 {\n width: 100% !important; }\n\n.h-25 {\n height: 25% !important; }\n\n.h-50 {\n height: 50% !important; }\n\n.h-75 {\n height: 75% !important; }\n\n.h-100 {\n height: 100% !important; }\n\n.mw-100 {\n max-width: 100% !important; }\n\n.mh-100 {\n max-height: 100% !important; }\n\n.m-0 {\n margin: 0 !important; }\n\n.mt-0,\n.my-0 {\n margin-top: 0 !important; }\n\n.mr-0,\n.mx-0 {\n margin-right: 0 !important; }\n\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important; }\n\n.ml-0,\n.mx-0 {\n margin-left: 0 !important; }\n\n.m-1 {\n margin: 0.25rem !important; }\n\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important; }\n\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important; }\n\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important; }\n\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important; }\n\n.m-2 {\n margin: 0.5rem !important; }\n\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important; }\n\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important; }\n\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important; }\n\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important; }\n\n.m-3 {\n margin: 1rem !important; }\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important; }\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important; }\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important; }\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important; }\n\n.m-4 {\n margin: 1.5rem !important; }\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important; }\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important; }\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important; }\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important; }\n\n.m-5 {\n margin: 3rem !important; }\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important; }\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important; }\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important; }\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important; }\n\n.p-0 {\n padding: 0 !important; }\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important; }\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important; }\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important; }\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important; }\n\n.p-1 {\n padding: 0.25rem !important; }\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important; }\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important; }\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important; }\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important; }\n\n.p-2 {\n padding: 0.5rem !important; }\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important; }\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important; }\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important; }\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important; }\n\n.p-3 {\n padding: 1rem !important; }\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important; }\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important; }\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important; }\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important; }\n\n.p-4 {\n padding: 1.5rem !important; }\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important; }\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important; }\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important; }\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important; }\n\n.p-5 {\n padding: 3rem !important; }\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important; }\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important; }\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important; }\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important; }\n\n.m-auto {\n margin: auto !important; }\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important; }\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important; }\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important; }\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important; }\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important; }\n .mt-sm-0,\n .my-sm-0 {\n margin-top: 0 !important; }\n .mr-sm-0,\n .mx-sm-0 {\n margin-right: 0 !important; }\n .mb-sm-0,\n .my-sm-0 {\n margin-bottom: 0 !important; }\n .ml-sm-0,\n .mx-sm-0 {\n margin-left: 0 !important; }\n .m-sm-1 {\n margin: 0.25rem !important; }\n .mt-sm-1,\n .my-sm-1 {\n margin-top: 0.25rem !important; }\n .mr-sm-1,\n .mx-sm-1 {\n margin-right: 0.25rem !important; }\n .mb-sm-1,\n .my-sm-1 {\n margin-bottom: 0.25rem !important; }\n .ml-sm-1,\n .mx-sm-1 {\n margin-left: 0.25rem !important; }\n .m-sm-2 {\n margin: 0.5rem !important; }\n .mt-sm-2,\n .my-sm-2 {\n margin-top: 0.5rem !important; }\n .mr-sm-2,\n .mx-sm-2 {\n margin-right: 0.5rem !important; }\n .mb-sm-2,\n .my-sm-2 {\n margin-bottom: 0.5rem !important; }\n .ml-sm-2,\n .mx-sm-2 {\n margin-left: 0.5rem !important; }\n .m-sm-3 {\n margin: 1rem !important; }\n .mt-sm-3,\n .my-sm-3 {\n margin-top: 1rem !important; }\n .mr-sm-3,\n .mx-sm-3 {\n margin-right: 1rem !important; }\n .mb-sm-3,\n .my-sm-3 {\n margin-bottom: 1rem !important; }\n .ml-sm-3,\n .mx-sm-3 {\n margin-left: 1rem !important; }\n .m-sm-4 {\n margin: 1.5rem !important; }\n .mt-sm-4,\n .my-sm-4 {\n margin-top: 1.5rem !important; }\n .mr-sm-4,\n .mx-sm-4 {\n margin-right: 1.5rem !important; }\n .mb-sm-4,\n .my-sm-4 {\n margin-bottom: 1.5rem !important; }\n .ml-sm-4,\n .mx-sm-4 {\n margin-left: 1.5rem !important; }\n .m-sm-5 {\n margin: 3rem !important; }\n .mt-sm-5,\n .my-sm-5 {\n margin-top: 3rem !important; }\n .mr-sm-5,\n .mx-sm-5 {\n margin-right: 3rem !important; }\n .mb-sm-5,\n .my-sm-5 {\n margin-bottom: 3rem !important; }\n .ml-sm-5,\n .mx-sm-5 {\n margin-left: 3rem !important; }\n .p-sm-0 {\n padding: 0 !important; }\n .pt-sm-0,\n .py-sm-0 {\n padding-top: 0 !important; }\n .pr-sm-0,\n .px-sm-0 {\n padding-right: 0 !important; }\n .pb-sm-0,\n .py-sm-0 {\n padding-bottom: 0 !important; }\n .pl-sm-0,\n .px-sm-0 {\n padding-left: 0 !important; }\n .p-sm-1 {\n padding: 0.25rem !important; }\n .pt-sm-1,\n .py-sm-1 {\n padding-top: 0.25rem !important; }\n .pr-sm-1,\n .px-sm-1 {\n padding-right: 0.25rem !important; }\n .pb-sm-1,\n .py-sm-1 {\n padding-bottom: 0.25rem !important; }\n .pl-sm-1,\n .px-sm-1 {\n padding-left: 0.25rem !important; }\n .p-sm-2 {\n padding: 0.5rem !important; }\n .pt-sm-2,\n .py-sm-2 {\n padding-top: 0.5rem !important; }\n .pr-sm-2,\n .px-sm-2 {\n padding-right: 0.5rem !important; }\n .pb-sm-2,\n .py-sm-2 {\n padding-bottom: 0.5rem !important; }\n .pl-sm-2,\n .px-sm-2 {\n padding-left: 0.5rem !important; }\n .p-sm-3 {\n padding: 1rem !important; }\n .pt-sm-3,\n .py-sm-3 {\n padding-top: 1rem !important; }\n .pr-sm-3,\n .px-sm-3 {\n padding-right: 1rem !important; }\n .pb-sm-3,\n .py-sm-3 {\n padding-bottom: 1rem !important; }\n .pl-sm-3,\n .px-sm-3 {\n padding-left: 1rem !important; }\n .p-sm-4 {\n padding: 1.5rem !important; }\n .pt-sm-4,\n .py-sm-4 {\n padding-top: 1.5rem !important; }\n .pr-sm-4,\n .px-sm-4 {\n padding-right: 1.5rem !important; }\n .pb-sm-4,\n .py-sm-4 {\n padding-bottom: 1.5rem !important; }\n .pl-sm-4,\n .px-sm-4 {\n padding-left: 1.5rem !important; }\n .p-sm-5 {\n padding: 3rem !important; }\n .pt-sm-5,\n .py-sm-5 {\n padding-top: 3rem !important; }\n .pr-sm-5,\n .px-sm-5 {\n padding-right: 3rem !important; }\n .pb-sm-5,\n .py-sm-5 {\n padding-bottom: 3rem !important; }\n .pl-sm-5,\n .px-sm-5 {\n padding-left: 3rem !important; }\n .m-sm-auto {\n margin: auto !important; }\n .mt-sm-auto,\n .my-sm-auto {\n margin-top: auto !important; }\n .mr-sm-auto,\n .mx-sm-auto {\n margin-right: auto !important; }\n .mb-sm-auto,\n .my-sm-auto {\n margin-bottom: auto !important; }\n .ml-sm-auto,\n .mx-sm-auto {\n margin-left: auto !important; } }\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important; }\n .mt-md-0,\n .my-md-0 {\n margin-top: 0 !important; }\n .mr-md-0,\n .mx-md-0 {\n margin-right: 0 !important; }\n .mb-md-0,\n .my-md-0 {\n margin-bottom: 0 !important; }\n .ml-md-0,\n .mx-md-0 {\n margin-left: 0 !important; }\n .m-md-1 {\n margin: 0.25rem !important; }\n .mt-md-1,\n .my-md-1 {\n margin-top: 0.25rem !important; }\n .mr-md-1,\n .mx-md-1 {\n margin-right: 0.25rem !important; }\n .mb-md-1,\n .my-md-1 {\n margin-bottom: 0.25rem !important; }\n .ml-md-1,\n .mx-md-1 {\n margin-left: 0.25rem !important; }\n .m-md-2 {\n margin: 0.5rem !important; }\n .mt-md-2,\n .my-md-2 {\n margin-top: 0.5rem !important; }\n .mr-md-2,\n .mx-md-2 {\n margin-right: 0.5rem !important; }\n .mb-md-2,\n .my-md-2 {\n margin-bottom: 0.5rem !important; }\n .ml-md-2,\n .mx-md-2 {\n margin-left: 0.5rem !important; }\n .m-md-3 {\n margin: 1rem !important; }\n .mt-md-3,\n .my-md-3 {\n margin-top: 1rem !important; }\n .mr-md-3,\n .mx-md-3 {\n margin-right: 1rem !important; }\n .mb-md-3,\n .my-md-3 {\n margin-bottom: 1rem !important; }\n .ml-md-3,\n .mx-md-3 {\n margin-left: 1rem !important; }\n .m-md-4 {\n margin: 1.5rem !important; }\n .mt-md-4,\n .my-md-4 {\n margin-top: 1.5rem !important; }\n .mr-md-4,\n .mx-md-4 {\n margin-right: 1.5rem !important; }\n .mb-md-4,\n .my-md-4 {\n margin-bottom: 1.5rem !important; }\n .ml-md-4,\n .mx-md-4 {\n margin-left: 1.5rem !important; }\n .m-md-5 {\n margin: 3rem !important; }\n .mt-md-5,\n .my-md-5 {\n margin-top: 3rem !important; }\n .mr-md-5,\n .mx-md-5 {\n margin-right: 3rem !important; }\n .mb-md-5,\n .my-md-5 {\n margin-bottom: 3rem !important; }\n .ml-md-5,\n .mx-md-5 {\n margin-left: 3rem !important; }\n .p-md-0 {\n padding: 0 !important; }\n .pt-md-0,\n .py-md-0 {\n padding-top: 0 !important; }\n .pr-md-0,\n .px-md-0 {\n padding-right: 0 !important; }\n .pb-md-0,\n .py-md-0 {\n padding-bottom: 0 !important; }\n .pl-md-0,\n .px-md-0 {\n padding-left: 0 !important; }\n .p-md-1 {\n padding: 0.25rem !important; }\n .pt-md-1,\n .py-md-1 {\n padding-top: 0.25rem !important; }\n .pr-md-1,\n .px-md-1 {\n padding-right: 0.25rem !important; }\n .pb-md-1,\n .py-md-1 {\n padding-bottom: 0.25rem !important; }\n .pl-md-1,\n .px-md-1 {\n padding-left: 0.25rem !important; }\n .p-md-2 {\n padding: 0.5rem !important; }\n .pt-md-2,\n .py-md-2 {\n padding-top: 0.5rem !important; }\n .pr-md-2,\n .px-md-2 {\n padding-right: 0.5rem !important; }\n .pb-md-2,\n .py-md-2 {\n padding-bottom: 0.5rem !important; }\n .pl-md-2,\n .px-md-2 {\n padding-left: 0.5rem !important; }\n .p-md-3 {\n padding: 1rem !important; }\n .pt-md-3,\n .py-md-3 {\n padding-top: 1rem !important; }\n .pr-md-3,\n .px-md-3 {\n padding-right: 1rem !important; }\n .pb-md-3,\n .py-md-3 {\n padding-bottom: 1rem !important; }\n .pl-md-3,\n .px-md-3 {\n padding-left: 1rem !important; }\n .p-md-4 {\n padding: 1.5rem !important; }\n .pt-md-4,\n .py-md-4 {\n padding-top: 1.5rem !important; }\n .pr-md-4,\n .px-md-4 {\n padding-right: 1.5rem !important; }\n .pb-md-4,\n .py-md-4 {\n padding-bottom: 1.5rem !important; }\n .pl-md-4,\n .px-md-4 {\n padding-left: 1.5rem !important; }\n .p-md-5 {\n padding: 3rem !important; }\n .pt-md-5,\n .py-md-5 {\n padding-top: 3rem !important; }\n .pr-md-5,\n .px-md-5 {\n padding-right: 3rem !important; }\n .pb-md-5,\n .py-md-5 {\n padding-bottom: 3rem !important; }\n .pl-md-5,\n .px-md-5 {\n padding-left: 3rem !important; }\n .m-md-auto {\n margin: auto !important; }\n .mt-md-auto,\n .my-md-auto {\n margin-top: auto !important; }\n .mr-md-auto,\n .mx-md-auto {\n margin-right: auto !important; }\n .mb-md-auto,\n .my-md-auto {\n margin-bottom: auto !important; }\n .ml-md-auto,\n .mx-md-auto {\n margin-left: auto !important; } }\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important; }\n .mt-lg-0,\n .my-lg-0 {\n margin-top: 0 !important; }\n .mr-lg-0,\n .mx-lg-0 {\n margin-right: 0 !important; }\n .mb-lg-0,\n .my-lg-0 {\n margin-bottom: 0 !important; }\n .ml-lg-0,\n .mx-lg-0 {\n margin-left: 0 !important; }\n .m-lg-1 {\n margin: 0.25rem !important; }\n .mt-lg-1,\n .my-lg-1 {\n margin-top: 0.25rem !important; }\n .mr-lg-1,\n .mx-lg-1 {\n margin-right: 0.25rem !important; }\n .mb-lg-1,\n .my-lg-1 {\n margin-bottom: 0.25rem !important; }\n .ml-lg-1,\n .mx-lg-1 {\n margin-left: 0.25rem !important; }\n .m-lg-2 {\n margin: 0.5rem !important; }\n .mt-lg-2,\n .my-lg-2 {\n margin-top: 0.5rem !important; }\n .mr-lg-2,\n .mx-lg-2 {\n margin-right: 0.5rem !important; }\n .mb-lg-2,\n .my-lg-2 {\n margin-bottom: 0.5rem !important; }\n .ml-lg-2,\n .mx-lg-2 {\n margin-left: 0.5rem !important; }\n .m-lg-3 {\n margin: 1rem !important; }\n .mt-lg-3,\n .my-lg-3 {\n margin-top: 1rem !important; }\n .mr-lg-3,\n .mx-lg-3 {\n margin-right: 1rem !important; }\n .mb-lg-3,\n .my-lg-3 {\n margin-bottom: 1rem !important; }\n .ml-lg-3,\n .mx-lg-3 {\n margin-left: 1rem !important; }\n .m-lg-4 {\n margin: 1.5rem !important; }\n .mt-lg-4,\n .my-lg-4 {\n margin-top: 1.5rem !important; }\n .mr-lg-4,\n .mx-lg-4 {\n margin-right: 1.5rem !important; }\n .mb-lg-4,\n .my-lg-4 {\n margin-bottom: 1.5rem !important; }\n .ml-lg-4,\n .mx-lg-4 {\n margin-left: 1.5rem !important; }\n .m-lg-5 {\n margin: 3rem !important; }\n .mt-lg-5,\n .my-lg-5 {\n margin-top: 3rem !important; }\n .mr-lg-5,\n .mx-lg-5 {\n margin-right: 3rem !important; }\n .mb-lg-5,\n .my-lg-5 {\n margin-bottom: 3rem !important; }\n .ml-lg-5,\n .mx-lg-5 {\n margin-left: 3rem !important; }\n .p-lg-0 {\n padding: 0 !important; }\n .pt-lg-0,\n .py-lg-0 {\n padding-top: 0 !important; }\n .pr-lg-0,\n .px-lg-0 {\n padding-right: 0 !important; }\n .pb-lg-0,\n .py-lg-0 {\n padding-bottom: 0 !important; }\n .pl-lg-0,\n .px-lg-0 {\n padding-left: 0 !important; }\n .p-lg-1 {\n padding: 0.25rem !important; }\n .pt-lg-1,\n .py-lg-1 {\n padding-top: 0.25rem !important; }\n .pr-lg-1,\n .px-lg-1 {\n padding-right: 0.25rem !important; }\n .pb-lg-1,\n .py-lg-1 {\n padding-bottom: 0.25rem !important; }\n .pl-lg-1,\n .px-lg-1 {\n padding-left: 0.25rem !important; }\n .p-lg-2 {\n padding: 0.5rem !important; }\n .pt-lg-2,\n .py-lg-2 {\n padding-top: 0.5rem !important; }\n .pr-lg-2,\n .px-lg-2 {\n padding-right: 0.5rem !important; }\n .pb-lg-2,\n .py-lg-2 {\n padding-bottom: 0.5rem !important; }\n .pl-lg-2,\n .px-lg-2 {\n padding-left: 0.5rem !important; }\n .p-lg-3 {\n padding: 1rem !important; }\n .pt-lg-3,\n .py-lg-3 {\n padding-top: 1rem !important; }\n .pr-lg-3,\n .px-lg-3 {\n padding-right: 1rem !important; }\n .pb-lg-3,\n .py-lg-3 {\n padding-bottom: 1rem !important; }\n .pl-lg-3,\n .px-lg-3 {\n padding-left: 1rem !important; }\n .p-lg-4 {\n padding: 1.5rem !important; }\n .pt-lg-4,\n .py-lg-4 {\n padding-top: 1.5rem !important; }\n .pr-lg-4,\n .px-lg-4 {\n padding-right: 1.5rem !important; }\n .pb-lg-4,\n .py-lg-4 {\n padding-bottom: 1.5rem !important; }\n .pl-lg-4,\n .px-lg-4 {\n padding-left: 1.5rem !important; }\n .p-lg-5 {\n padding: 3rem !important; }\n .pt-lg-5,\n .py-lg-5 {\n padding-top: 3rem !important; }\n .pr-lg-5,\n .px-lg-5 {\n padding-right: 3rem !important; }\n .pb-lg-5,\n .py-lg-5 {\n padding-bottom: 3rem !important; }\n .pl-lg-5,\n .px-lg-5 {\n padding-left: 3rem !important; }\n .m-lg-auto {\n margin: auto !important; }\n .mt-lg-auto,\n .my-lg-auto {\n margin-top: auto !important; }\n .mr-lg-auto,\n .mx-lg-auto {\n margin-right: auto !important; }\n .mb-lg-auto,\n .my-lg-auto {\n margin-bottom: auto !important; }\n .ml-lg-auto,\n .mx-lg-auto {\n margin-left: auto !important; } }\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important; }\n .mt-xl-0,\n .my-xl-0 {\n margin-top: 0 !important; }\n .mr-xl-0,\n .mx-xl-0 {\n margin-right: 0 !important; }\n .mb-xl-0,\n .my-xl-0 {\n margin-bottom: 0 !important; }\n .ml-xl-0,\n .mx-xl-0 {\n margin-left: 0 !important; }\n .m-xl-1 {\n margin: 0.25rem !important; }\n .mt-xl-1,\n .my-xl-1 {\n margin-top: 0.25rem !important; }\n .mr-xl-1,\n .mx-xl-1 {\n margin-right: 0.25rem !important; }\n .mb-xl-1,\n .my-xl-1 {\n margin-bottom: 0.25rem !important; }\n .ml-xl-1,\n .mx-xl-1 {\n margin-left: 0.25rem !important; }\n .m-xl-2 {\n margin: 0.5rem !important; }\n .mt-xl-2,\n .my-xl-2 {\n margin-top: 0.5rem !important; }\n .mr-xl-2,\n .mx-xl-2 {\n margin-right: 0.5rem !important; }\n .mb-xl-2,\n .my-xl-2 {\n margin-bottom: 0.5rem !important; }\n .ml-xl-2,\n .mx-xl-2 {\n margin-left: 0.5rem !important; }\n .m-xl-3 {\n margin: 1rem !important; }\n .mt-xl-3,\n .my-xl-3 {\n margin-top: 1rem !important; }\n .mr-xl-3,\n .mx-xl-3 {\n margin-right: 1rem !important; }\n .mb-xl-3,\n .my-xl-3 {\n margin-bottom: 1rem !important; }\n .ml-xl-3,\n .mx-xl-3 {\n margin-left: 1rem !important; }\n .m-xl-4 {\n margin: 1.5rem !important; }\n .mt-xl-4,\n .my-xl-4 {\n margin-top: 1.5rem !important; }\n .mr-xl-4,\n .mx-xl-4 {\n margin-right: 1.5rem !important; }\n .mb-xl-4,\n .my-xl-4 {\n margin-bottom: 1.5rem !important; }\n .ml-xl-4,\n .mx-xl-4 {\n margin-left: 1.5rem !important; }\n .m-xl-5 {\n margin: 3rem !important; }\n .mt-xl-5,\n .my-xl-5 {\n margin-top: 3rem !important; }\n .mr-xl-5,\n .mx-xl-5 {\n margin-right: 3rem !important; }\n .mb-xl-5,\n .my-xl-5 {\n margin-bottom: 3rem !important; }\n .ml-xl-5,\n .mx-xl-5 {\n margin-left: 3rem !important; }\n .p-xl-0 {\n padding: 0 !important; }\n .pt-xl-0,\n .py-xl-0 {\n padding-top: 0 !important; }\n .pr-xl-0,\n .px-xl-0 {\n padding-right: 0 !important; }\n .pb-xl-0,\n .py-xl-0 {\n padding-bottom: 0 !important; }\n .pl-xl-0,\n .px-xl-0 {\n padding-left: 0 !important; }\n .p-xl-1 {\n padding: 0.25rem !important; }\n .pt-xl-1,\n .py-xl-1 {\n padding-top: 0.25rem !important; }\n .pr-xl-1,\n .px-xl-1 {\n padding-right: 0.25rem !important; }\n .pb-xl-1,\n .py-xl-1 {\n padding-bottom: 0.25rem !important; }\n .pl-xl-1,\n .px-xl-1 {\n padding-left: 0.25rem !important; }\n .p-xl-2 {\n padding: 0.5rem !important; }\n .pt-xl-2,\n .py-xl-2 {\n padding-top: 0.5rem !important; }\n .pr-xl-2,\n .px-xl-2 {\n padding-right: 0.5rem !important; }\n .pb-xl-2,\n .py-xl-2 {\n padding-bottom: 0.5rem !important; }\n .pl-xl-2,\n .px-xl-2 {\n padding-left: 0.5rem !important; }\n .p-xl-3 {\n padding: 1rem !important; }\n .pt-xl-3,\n .py-xl-3 {\n padding-top: 1rem !important; }\n .pr-xl-3,\n .px-xl-3 {\n padding-right: 1rem !important; }\n .pb-xl-3,\n .py-xl-3 {\n padding-bottom: 1rem !important; }\n .pl-xl-3,\n .px-xl-3 {\n padding-left: 1rem !important; }\n .p-xl-4 {\n padding: 1.5rem !important; }\n .pt-xl-4,\n .py-xl-4 {\n padding-top: 1.5rem !important; }\n .pr-xl-4,\n .px-xl-4 {\n padding-right: 1.5rem !important; }\n .pb-xl-4,\n .py-xl-4 {\n padding-bottom: 1.5rem !important; }\n .pl-xl-4,\n .px-xl-4 {\n padding-left: 1.5rem !important; }\n .p-xl-5 {\n padding: 3rem !important; }\n .pt-xl-5,\n .py-xl-5 {\n padding-top: 3rem !important; }\n .pr-xl-5,\n .px-xl-5 {\n padding-right: 3rem !important; }\n .pb-xl-5,\n .py-xl-5 {\n padding-bottom: 3rem !important; }\n .pl-xl-5,\n .px-xl-5 {\n padding-left: 3rem !important; }\n .m-xl-auto {\n margin: auto !important; }\n .mt-xl-auto,\n .my-xl-auto {\n margin-top: auto !important; }\n .mr-xl-auto,\n .mx-xl-auto {\n margin-right: auto !important; }\n .mb-xl-auto,\n .my-xl-auto {\n margin-bottom: auto !important; }\n .ml-xl-auto,\n .mx-xl-auto {\n margin-left: auto !important; } }\n\n.text-justify {\n text-align: justify !important; }\n\n.text-nowrap {\n white-space: nowrap !important; }\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; }\n\n.text-left {\n text-align: left !important; }\n\n.text-right {\n text-align: right !important; }\n\n.text-center {\n text-align: center !important; }\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important; }\n .text-sm-right {\n text-align: right !important; }\n .text-sm-center {\n text-align: center !important; } }\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important; }\n .text-md-right {\n text-align: right !important; }\n .text-md-center {\n text-align: center !important; } }\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important; }\n .text-lg-right {\n text-align: right !important; }\n .text-lg-center {\n text-align: center !important; } }\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important; }\n .text-xl-right {\n text-align: right !important; }\n .text-xl-center {\n text-align: center !important; } }\n\n.text-lowercase {\n text-transform: lowercase !important; }\n\n.text-uppercase {\n text-transform: uppercase !important; }\n\n.text-capitalize {\n text-transform: capitalize !important; }\n\n.font-weight-light {\n font-weight: 300 !important; }\n\n.font-weight-normal {\n font-weight: 400 !important; }\n\n.font-weight-bold {\n font-weight: 700 !important; }\n\n.font-italic {\n font-style: italic !important; }\n\n.text-white {\n color: #fff !important; }\n\n.text-primary {\n color: #008cba !important; }\n\na.text-primary:hover, a.text-primary:focus {\n color: #006687 !important; }\n\n.text-secondary {\n color: #eee !important; }\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #d5d5d5 !important; }\n\n.text-success {\n color: #43ac6a !important; }\n\na.text-success:hover, a.text-success:focus {\n color: #358753 !important; }\n\n.text-info {\n color: #5bc0de !important; }\n\na.text-info:hover, a.text-info:focus {\n color: #31b0d5 !important; }\n\n.text-warning {\n color: #E99002 !important; }\n\na.text-warning:hover, a.text-warning:focus {\n color: #b67102 !important; }\n\n.text-danger {\n color: #F04124 !important; }\n\na.text-danger:hover, a.text-danger:focus {\n color: #d32a0e !important; }\n\n.text-light {\n color: #eee !important; }\n\na.text-light:hover, a.text-light:focus {\n color: #d5d5d5 !important; }\n\n.text-dark {\n color: #222 !important; }\n\na.text-dark:hover, a.text-dark:focus {\n color: #090909 !important; }\n\n.text-muted {\n color: #888 !important; }\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0; }\n\n.visible {\n visibility: visible !important; }\n\n.invisible {\n visibility: hidden !important; }\n\n@media print {\n *,\n *::before,\n *::after {\n text-shadow: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important; }\n a:not(.btn) {\n text-decoration: underline; }\n abbr[title]::after {\n content: " (" attr(title) ")"; }\n pre {\n white-space: pre-wrap !important; }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid; }\n thead {\n display: table-header-group; }\n tr,\n img {\n page-break-inside: avoid; }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3; }\n h2,\n h3 {\n page-break-after: avoid; }\n @page {\n size: a3; }\n body {\n min-width: 992px !important; }\n .container {\n min-width: 992px !important; }\n .navbar {\n display: none; }\n .badge {\n border: 1px solid #000; }\n .table {\n border-collapse: collapse !important; }\n .table td,\n .table th {\n background-color: #fff !important; }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important; } }\n\ninput[type=text]::-ms-clear {\n display: none; }\n\nbutton,\n.btn {\n cursor: pointer; }\n\na:focus,\na:hover,\na.selected {\n color: #00ab38; }\n\n.line-breaks-visible {\n white-space: pre-wrap; }\n\n.second {\n margin-top: 1rem; }\n\n.card.maximized {\n height: 100%; }\n\n.data-item-title {\n font-weight: bold; }\n\n.project-explorer {\n background: #fff;\n overflow: scroll;\n white-space: nowrap;\n z-index: 1; }\n\n.content-container {\n padding: 0; }\n\n.project-explorer-container {\n overflow-x: auto !important; }\n\n.specmate-container {\n height: calc(100vh - 58px);\n margin-top: 58px; }\n\n.dnd-sortable-drag {\n opacity: 0.75;\n -webkit-transform: translateX(10px);\n transform: translateX(10px);\n -webkit-transition: 0.15s;\n transition: 0.15s; }\n\n.no-bottom-margin {\n margin-bottom: 0; }\n\n@media screen and (max-width: 991px) {\n .specmate-container {\n height: calc(100vh - 133px);\n margin-top: 133px; } }\n'},function(n,o){n.exports=function(n){var o="undefined"!=typeof window&&window.location;if(!o)throw new Error("fixUrls requires window.location");if(!n||"string"!=typeof n)return n;var e=o.protocol+"//"+o.host,t=e+o.pathname.replace(/\/[^\/]*$/,"/");return n.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(n,o){var r,a=o.trim().replace(/^"(.*)"$/,function(n,o){return o}).replace(/^'(.*)'$/,function(n,o){return o});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(a)?n:(r=0===a.indexOf("//")?a:0===a.indexOf("/")?e+a:t+a.replace(/^\.\//,""),"url("+JSON.stringify(r)+")")})}},function(n,o,e){var t=e(782);"string"==typeof t&&(t=[[n.i,t,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};e(91)(t,r);t.locals&&(n.exports=t.locals)},function(n,o,e){var t=e(132);(n.exports=e(133)(!1)).push([n.i,'.flag-icon-background {\n background-size: contain;\n background-position: 50%;\n background-repeat: no-repeat;\n}\n.flag-icon {\n background-size: contain;\n background-position: 50%;\n background-repeat: no-repeat;\n position: relative;\n display: inline-block;\n width: 1.33333333em;\n line-height: 1em;\n}\n.flag-icon:before {\n content: "\\A0";\n}\n.flag-icon.flag-icon-squared {\n width: 1em;\n}\n.flag-icon-ad {\n background-image: url('+t(e(783))+");\n}\n.flag-icon-ad.flag-icon-squared {\n background-image: url("+t(e(784))+");\n}\n.flag-icon-ae {\n background-image: url("+t(e(785))+");\n}\n.flag-icon-ae.flag-icon-squared {\n background-image: url("+t(e(786))+");\n}\n.flag-icon-af {\n background-image: url("+t(e(787))+");\n}\n.flag-icon-af.flag-icon-squared {\n background-image: url("+t(e(788))+");\n}\n.flag-icon-ag {\n background-image: url("+t(e(789))+");\n}\n.flag-icon-ag.flag-icon-squared {\n background-image: url("+t(e(790))+");\n}\n.flag-icon-ai {\n background-image: url("+t(e(791))+");\n}\n.flag-icon-ai.flag-icon-squared {\n background-image: url("+t(e(792))+");\n}\n.flag-icon-al {\n background-image: url("+t(e(793))+");\n}\n.flag-icon-al.flag-icon-squared {\n background-image: url("+t(e(794))+");\n}\n.flag-icon-am {\n background-image: url("+t(e(795))+");\n}\n.flag-icon-am.flag-icon-squared {\n background-image: url("+t(e(796))+");\n}\n.flag-icon-ao {\n background-image: url("+t(e(797))+");\n}\n.flag-icon-ao.flag-icon-squared {\n background-image: url("+t(e(798))+");\n}\n.flag-icon-aq {\n background-image: url("+t(e(799))+");\n}\n.flag-icon-aq.flag-icon-squared {\n background-image: url("+t(e(800))+");\n}\n.flag-icon-ar {\n background-image: url("+t(e(801))+");\n}\n.flag-icon-ar.flag-icon-squared {\n background-image: url("+t(e(802))+");\n}\n.flag-icon-as {\n background-image: url("+t(e(803))+");\n}\n.flag-icon-as.flag-icon-squared {\n background-image: url("+t(e(804))+");\n}\n.flag-icon-at {\n background-image: url("+t(e(805))+");\n}\n.flag-icon-at.flag-icon-squared {\n background-image: url("+t(e(806))+");\n}\n.flag-icon-au {\n background-image: url("+t(e(807))+");\n}\n.flag-icon-au.flag-icon-squared {\n background-image: url("+t(e(808))+");\n}\n.flag-icon-aw {\n background-image: url("+t(e(809))+");\n}\n.flag-icon-aw.flag-icon-squared {\n background-image: url("+t(e(810))+");\n}\n.flag-icon-ax {\n background-image: url("+t(e(811))+");\n}\n.flag-icon-ax.flag-icon-squared {\n background-image: url("+t(e(812))+");\n}\n.flag-icon-az {\n background-image: url("+t(e(813))+");\n}\n.flag-icon-az.flag-icon-squared {\n background-image: url("+t(e(814))+");\n}\n.flag-icon-ba {\n background-image: url("+t(e(815))+");\n}\n.flag-icon-ba.flag-icon-squared {\n background-image: url("+t(e(816))+");\n}\n.flag-icon-bb {\n background-image: url("+t(e(817))+");\n}\n.flag-icon-bb.flag-icon-squared {\n background-image: url("+t(e(818))+");\n}\n.flag-icon-bd {\n background-image: url("+t(e(819))+");\n}\n.flag-icon-bd.flag-icon-squared {\n background-image: url("+t(e(820))+");\n}\n.flag-icon-be {\n background-image: url("+t(e(821))+");\n}\n.flag-icon-be.flag-icon-squared {\n background-image: url("+t(e(822))+");\n}\n.flag-icon-bf {\n background-image: url("+t(e(823))+");\n}\n.flag-icon-bf.flag-icon-squared {\n background-image: url("+t(e(824))+");\n}\n.flag-icon-bg {\n background-image: url("+t(e(825))+");\n}\n.flag-icon-bg.flag-icon-squared {\n background-image: url("+t(e(826))+");\n}\n.flag-icon-bh {\n background-image: url("+t(e(827))+");\n}\n.flag-icon-bh.flag-icon-squared {\n background-image: url("+t(e(828))+");\n}\n.flag-icon-bi {\n background-image: url("+t(e(829))+");\n}\n.flag-icon-bi.flag-icon-squared {\n background-image: url("+t(e(830))+");\n}\n.flag-icon-bj {\n background-image: url("+t(e(831))+");\n}\n.flag-icon-bj.flag-icon-squared {\n background-image: url("+t(e(832))+");\n}\n.flag-icon-bl {\n background-image: url("+t(e(833))+");\n}\n.flag-icon-bl.flag-icon-squared {\n background-image: url("+t(e(834))+");\n}\n.flag-icon-bm {\n background-image: url("+t(e(835))+");\n}\n.flag-icon-bm.flag-icon-squared {\n background-image: url("+t(e(836))+");\n}\n.flag-icon-bn {\n background-image: url("+t(e(837))+");\n}\n.flag-icon-bn.flag-icon-squared {\n background-image: url("+t(e(838))+");\n}\n.flag-icon-bo {\n background-image: url("+t(e(839))+");\n}\n.flag-icon-bo.flag-icon-squared {\n background-image: url("+t(e(840))+");\n}\n.flag-icon-bq {\n background-image: url("+t(e(841))+");\n}\n.flag-icon-bq.flag-icon-squared {\n background-image: url("+t(e(842))+");\n}\n.flag-icon-br {\n background-image: url("+t(e(843))+");\n}\n.flag-icon-br.flag-icon-squared {\n background-image: url("+t(e(844))+");\n}\n.flag-icon-bs {\n background-image: url("+t(e(845))+");\n}\n.flag-icon-bs.flag-icon-squared {\n background-image: url("+t(e(846))+");\n}\n.flag-icon-bt {\n background-image: url("+t(e(847))+");\n}\n.flag-icon-bt.flag-icon-squared {\n background-image: url("+t(e(848))+");\n}\n.flag-icon-bv {\n background-image: url("+t(e(849))+");\n}\n.flag-icon-bv.flag-icon-squared {\n background-image: url("+t(e(850))+");\n}\n.flag-icon-bw {\n background-image: url("+t(e(851))+");\n}\n.flag-icon-bw.flag-icon-squared {\n background-image: url("+t(e(852))+");\n}\n.flag-icon-by {\n background-image: url("+t(e(853))+");\n}\n.flag-icon-by.flag-icon-squared {\n background-image: url("+t(e(854))+");\n}\n.flag-icon-bz {\n background-image: url("+t(e(855))+");\n}\n.flag-icon-bz.flag-icon-squared {\n background-image: url("+t(e(856))+");\n}\n.flag-icon-ca {\n background-image: url("+t(e(857))+");\n}\n.flag-icon-ca.flag-icon-squared {\n background-image: url("+t(e(858))+");\n}\n.flag-icon-cc {\n background-image: url("+t(e(859))+");\n}\n.flag-icon-cc.flag-icon-squared {\n background-image: url("+t(e(860))+");\n}\n.flag-icon-cd {\n background-image: url("+t(e(861))+");\n}\n.flag-icon-cd.flag-icon-squared {\n background-image: url("+t(e(862))+");\n}\n.flag-icon-cf {\n background-image: url("+t(e(863))+");\n}\n.flag-icon-cf.flag-icon-squared {\n background-image: url("+t(e(864))+");\n}\n.flag-icon-cg {\n background-image: url("+t(e(865))+");\n}\n.flag-icon-cg.flag-icon-squared {\n background-image: url("+t(e(866))+");\n}\n.flag-icon-ch {\n background-image: url("+t(e(867))+");\n}\n.flag-icon-ch.flag-icon-squared {\n background-image: url("+t(e(868))+");\n}\n.flag-icon-ci {\n background-image: url("+t(e(869))+");\n}\n.flag-icon-ci.flag-icon-squared {\n background-image: url("+t(e(870))+");\n}\n.flag-icon-ck {\n background-image: url("+t(e(871))+");\n}\n.flag-icon-ck.flag-icon-squared {\n background-image: url("+t(e(872))+");\n}\n.flag-icon-cl {\n background-image: url("+t(e(873))+");\n}\n.flag-icon-cl.flag-icon-squared {\n background-image: url("+t(e(874))+");\n}\n.flag-icon-cm {\n background-image: url("+t(e(875))+");\n}\n.flag-icon-cm.flag-icon-squared {\n background-image: url("+t(e(876))+");\n}\n.flag-icon-cn {\n background-image: url("+t(e(877))+");\n}\n.flag-icon-cn.flag-icon-squared {\n background-image: url("+t(e(878))+");\n}\n.flag-icon-co {\n background-image: url("+t(e(879))+");\n}\n.flag-icon-co.flag-icon-squared {\n background-image: url("+t(e(880))+");\n}\n.flag-icon-cr {\n background-image: url("+t(e(881))+");\n}\n.flag-icon-cr.flag-icon-squared {\n background-image: url("+t(e(882))+");\n}\n.flag-icon-cu {\n background-image: url("+t(e(883))+");\n}\n.flag-icon-cu.flag-icon-squared {\n background-image: url("+t(e(884))+");\n}\n.flag-icon-cv {\n background-image: url("+t(e(885))+");\n}\n.flag-icon-cv.flag-icon-squared {\n background-image: url("+t(e(886))+");\n}\n.flag-icon-cw {\n background-image: url("+t(e(887))+");\n}\n.flag-icon-cw.flag-icon-squared {\n background-image: url("+t(e(888))+");\n}\n.flag-icon-cx {\n background-image: url("+t(e(889))+");\n}\n.flag-icon-cx.flag-icon-squared {\n background-image: url("+t(e(890))+");\n}\n.flag-icon-cy {\n background-image: url("+t(e(891))+");\n}\n.flag-icon-cy.flag-icon-squared {\n background-image: url("+t(e(892))+");\n}\n.flag-icon-cz {\n background-image: url("+t(e(893))+");\n}\n.flag-icon-cz.flag-icon-squared {\n background-image: url("+t(e(894))+");\n}\n.flag-icon-de {\n background-image: url("+t(e(895))+");\n}\n.flag-icon-de.flag-icon-squared {\n background-image: url("+t(e(896))+");\n}\n.flag-icon-dj {\n background-image: url("+t(e(897))+");\n}\n.flag-icon-dj.flag-icon-squared {\n background-image: url("+t(e(898))+");\n}\n.flag-icon-dk {\n background-image: url("+t(e(899))+");\n}\n.flag-icon-dk.flag-icon-squared {\n background-image: url("+t(e(900))+");\n}\n.flag-icon-dm {\n background-image: url("+t(e(901))+");\n}\n.flag-icon-dm.flag-icon-squared {\n background-image: url("+t(e(902))+");\n}\n.flag-icon-do {\n background-image: url("+t(e(903))+");\n}\n.flag-icon-do.flag-icon-squared {\n background-image: url("+t(e(904))+");\n}\n.flag-icon-dz {\n background-image: url("+t(e(905))+");\n}\n.flag-icon-dz.flag-icon-squared {\n background-image: url("+t(e(906))+");\n}\n.flag-icon-ec {\n background-image: url("+t(e(907))+");\n}\n.flag-icon-ec.flag-icon-squared {\n background-image: url("+t(e(908))+");\n}\n.flag-icon-ee {\n background-image: url("+t(e(909))+");\n}\n.flag-icon-ee.flag-icon-squared {\n background-image: url("+t(e(910))+");\n}\n.flag-icon-eg {\n background-image: url("+t(e(911))+");\n}\n.flag-icon-eg.flag-icon-squared {\n background-image: url("+t(e(912))+");\n}\n.flag-icon-eh {\n background-image: url("+t(e(913))+");\n}\n.flag-icon-eh.flag-icon-squared {\n background-image: url("+t(e(914))+");\n}\n.flag-icon-er {\n background-image: url("+t(e(915))+");\n}\n.flag-icon-er.flag-icon-squared {\n background-image: url("+t(e(916))+");\n}\n.flag-icon-es {\n background-image: url("+t(e(917))+");\n}\n.flag-icon-es.flag-icon-squared {\n background-image: url("+t(e(918))+");\n}\n.flag-icon-et {\n background-image: url("+t(e(919))+");\n}\n.flag-icon-et.flag-icon-squared {\n background-image: url("+t(e(920))+");\n}\n.flag-icon-fi {\n background-image: url("+t(e(921))+");\n}\n.flag-icon-fi.flag-icon-squared {\n background-image: url("+t(e(922))+");\n}\n.flag-icon-fj {\n background-image: url("+t(e(923))+");\n}\n.flag-icon-fj.flag-icon-squared {\n background-image: url("+t(e(924))+");\n}\n.flag-icon-fk {\n background-image: url("+t(e(925))+");\n}\n.flag-icon-fk.flag-icon-squared {\n background-image: url("+t(e(926))+");\n}\n.flag-icon-fm {\n background-image: url("+t(e(927))+");\n}\n.flag-icon-fm.flag-icon-squared {\n background-image: url("+t(e(928))+");\n}\n.flag-icon-fo {\n background-image: url("+t(e(929))+");\n}\n.flag-icon-fo.flag-icon-squared {\n background-image: url("+t(e(930))+");\n}\n.flag-icon-fr {\n background-image: url("+t(e(931))+");\n}\n.flag-icon-fr.flag-icon-squared {\n background-image: url("+t(e(932))+");\n}\n.flag-icon-ga {\n background-image: url("+t(e(933))+");\n}\n.flag-icon-ga.flag-icon-squared {\n background-image: url("+t(e(934))+");\n}\n.flag-icon-gb {\n background-image: url("+t(e(935))+");\n}\n.flag-icon-gb.flag-icon-squared {\n background-image: url("+t(e(936))+");\n}\n.flag-icon-gd {\n background-image: url("+t(e(937))+");\n}\n.flag-icon-gd.flag-icon-squared {\n background-image: url("+t(e(938))+");\n}\n.flag-icon-ge {\n background-image: url("+t(e(939))+");\n}\n.flag-icon-ge.flag-icon-squared {\n background-image: url("+t(e(940))+");\n}\n.flag-icon-gf {\n background-image: url("+t(e(941))+");\n}\n.flag-icon-gf.flag-icon-squared {\n background-image: url("+t(e(942))+");\n}\n.flag-icon-gg {\n background-image: url("+t(e(943))+");\n}\n.flag-icon-gg.flag-icon-squared {\n background-image: url("+t(e(944))+");\n}\n.flag-icon-gh {\n background-image: url("+t(e(945))+");\n}\n.flag-icon-gh.flag-icon-squared {\n background-image: url("+t(e(946))+");\n}\n.flag-icon-gi {\n background-image: url("+t(e(947))+");\n}\n.flag-icon-gi.flag-icon-squared {\n background-image: url("+t(e(948))+");\n}\n.flag-icon-gl {\n background-image: url("+t(e(949))+");\n}\n.flag-icon-gl.flag-icon-squared {\n background-image: url("+t(e(950))+");\n}\n.flag-icon-gm {\n background-image: url("+t(e(951))+");\n}\n.flag-icon-gm.flag-icon-squared {\n background-image: url("+t(e(952))+");\n}\n.flag-icon-gn {\n background-image: url("+t(e(953))+");\n}\n.flag-icon-gn.flag-icon-squared {\n background-image: url("+t(e(954))+");\n}\n.flag-icon-gp {\n background-image: url("+t(e(955))+");\n}\n.flag-icon-gp.flag-icon-squared {\n background-image: url("+t(e(956))+");\n}\n.flag-icon-gq {\n background-image: url("+t(e(957))+");\n}\n.flag-icon-gq.flag-icon-squared {\n background-image: url("+t(e(958))+");\n}\n.flag-icon-gr {\n background-image: url("+t(e(959))+");\n}\n.flag-icon-gr.flag-icon-squared {\n background-image: url("+t(e(960))+");\n}\n.flag-icon-gs {\n background-image: url("+t(e(961))+");\n}\n.flag-icon-gs.flag-icon-squared {\n background-image: url("+t(e(962))+");\n}\n.flag-icon-gt {\n background-image: url("+t(e(963))+");\n}\n.flag-icon-gt.flag-icon-squared {\n background-image: url("+t(e(964))+");\n}\n.flag-icon-gu {\n background-image: url("+t(e(965))+");\n}\n.flag-icon-gu.flag-icon-squared {\n background-image: url("+t(e(966))+");\n}\n.flag-icon-gw {\n background-image: url("+t(e(967))+");\n}\n.flag-icon-gw.flag-icon-squared {\n background-image: url("+t(e(968))+");\n}\n.flag-icon-gy {\n background-image: url("+t(e(969))+");\n}\n.flag-icon-gy.flag-icon-squared {\n background-image: url("+t(e(970))+");\n}\n.flag-icon-hk {\n background-image: url("+t(e(971))+");\n}\n.flag-icon-hk.flag-icon-squared {\n background-image: url("+t(e(972))+");\n}\n.flag-icon-hm {\n background-image: url("+t(e(973))+");\n}\n.flag-icon-hm.flag-icon-squared {\n background-image: url("+t(e(974))+");\n}\n.flag-icon-hn {\n background-image: url("+t(e(975))+");\n}\n.flag-icon-hn.flag-icon-squared {\n background-image: url("+t(e(976))+");\n}\n.flag-icon-hr {\n background-image: url("+t(e(977))+");\n}\n.flag-icon-hr.flag-icon-squared {\n background-image: url("+t(e(978))+");\n}\n.flag-icon-ht {\n background-image: url("+t(e(979))+");\n}\n.flag-icon-ht.flag-icon-squared {\n background-image: url("+t(e(980))+");\n}\n.flag-icon-hu {\n background-image: url("+t(e(981))+");\n}\n.flag-icon-hu.flag-icon-squared {\n background-image: url("+t(e(982))+");\n}\n.flag-icon-id {\n background-image: url("+t(e(983))+");\n}\n.flag-icon-id.flag-icon-squared {\n background-image: url("+t(e(984))+");\n}\n.flag-icon-ie {\n background-image: url("+t(e(985))+");\n}\n.flag-icon-ie.flag-icon-squared {\n background-image: url("+t(e(986))+");\n}\n.flag-icon-il {\n background-image: url("+t(e(987))+");\n}\n.flag-icon-il.flag-icon-squared {\n background-image: url("+t(e(988))+");\n}\n.flag-icon-im {\n background-image: url("+t(e(989))+");\n}\n.flag-icon-im.flag-icon-squared {\n background-image: url("+t(e(990))+");\n}\n.flag-icon-in {\n background-image: url("+t(e(991))+");\n}\n.flag-icon-in.flag-icon-squared {\n background-image: url("+t(e(992))+");\n}\n.flag-icon-io {\n background-image: url("+t(e(993))+");\n}\n.flag-icon-io.flag-icon-squared {\n background-image: url("+t(e(994))+");\n}\n.flag-icon-iq {\n background-image: url("+t(e(995))+");\n}\n.flag-icon-iq.flag-icon-squared {\n background-image: url("+t(e(996))+");\n}\n.flag-icon-ir {\n background-image: url("+t(e(997))+");\n}\n.flag-icon-ir.flag-icon-squared {\n background-image: url("+t(e(998))+");\n}\n.flag-icon-is {\n background-image: url("+t(e(999))+");\n}\n.flag-icon-is.flag-icon-squared {\n background-image: url("+t(e(1e3))+");\n}\n.flag-icon-it {\n background-image: url("+t(e(1001))+");\n}\n.flag-icon-it.flag-icon-squared {\n background-image: url("+t(e(1002))+");\n}\n.flag-icon-je {\n background-image: url("+t(e(1003))+");\n}\n.flag-icon-je.flag-icon-squared {\n background-image: url("+t(e(1004))+");\n}\n.flag-icon-jm {\n background-image: url("+t(e(1005))+");\n}\n.flag-icon-jm.flag-icon-squared {\n background-image: url("+t(e(1006))+");\n}\n.flag-icon-jo {\n background-image: url("+t(e(1007))+");\n}\n.flag-icon-jo.flag-icon-squared {\n background-image: url("+t(e(1008))+");\n}\n.flag-icon-jp {\n background-image: url("+t(e(1009))+");\n}\n.flag-icon-jp.flag-icon-squared {\n background-image: url("+t(e(1010))+");\n}\n.flag-icon-ke {\n background-image: url("+t(e(1011))+");\n}\n.flag-icon-ke.flag-icon-squared {\n background-image: url("+t(e(1012))+");\n}\n.flag-icon-kg {\n background-image: url("+t(e(1013))+");\n}\n.flag-icon-kg.flag-icon-squared {\n background-image: url("+t(e(1014))+");\n}\n.flag-icon-kh {\n background-image: url("+t(e(1015))+");\n}\n.flag-icon-kh.flag-icon-squared {\n background-image: url("+t(e(1016))+");\n}\n.flag-icon-ki {\n background-image: url("+t(e(1017))+");\n}\n.flag-icon-ki.flag-icon-squared {\n background-image: url("+t(e(1018))+");\n}\n.flag-icon-km {\n background-image: url("+t(e(1019))+");\n}\n.flag-icon-km.flag-icon-squared {\n background-image: url("+t(e(1020))+");\n}\n.flag-icon-kn {\n background-image: url("+t(e(1021))+");\n}\n.flag-icon-kn.flag-icon-squared {\n background-image: url("+t(e(1022))+");\n}\n.flag-icon-kp {\n background-image: url("+t(e(1023))+");\n}\n.flag-icon-kp.flag-icon-squared {\n background-image: url("+t(e(1024))+");\n}\n.flag-icon-kr {\n background-image: url("+t(e(1025))+");\n}\n.flag-icon-kr.flag-icon-squared {\n background-image: url("+t(e(1026))+");\n}\n.flag-icon-kw {\n background-image: url("+t(e(1027))+");\n}\n.flag-icon-kw.flag-icon-squared {\n background-image: url("+t(e(1028))+");\n}\n.flag-icon-ky {\n background-image: url("+t(e(1029))+");\n}\n.flag-icon-ky.flag-icon-squared {\n background-image: url("+t(e(1030))+");\n}\n.flag-icon-kz {\n background-image: url("+t(e(1031))+");\n}\n.flag-icon-kz.flag-icon-squared {\n background-image: url("+t(e(1032))+");\n}\n.flag-icon-la {\n background-image: url("+t(e(1033))+");\n}\n.flag-icon-la.flag-icon-squared {\n background-image: url("+t(e(1034))+");\n}\n.flag-icon-lb {\n background-image: url("+t(e(1035))+");\n}\n.flag-icon-lb.flag-icon-squared {\n background-image: url("+t(e(1036))+");\n}\n.flag-icon-lc {\n background-image: url("+t(e(1037))+");\n}\n.flag-icon-lc.flag-icon-squared {\n background-image: url("+t(e(1038))+");\n}\n.flag-icon-li {\n background-image: url("+t(e(1039))+");\n}\n.flag-icon-li.flag-icon-squared {\n background-image: url("+t(e(1040))+");\n}\n.flag-icon-lk {\n background-image: url("+t(e(1041))+");\n}\n.flag-icon-lk.flag-icon-squared {\n background-image: url("+t(e(1042))+");\n}\n.flag-icon-lr {\n background-image: url("+t(e(1043))+");\n}\n.flag-icon-lr.flag-icon-squared {\n background-image: url("+t(e(1044))+");\n}\n.flag-icon-ls {\n background-image: url("+t(e(1045))+");\n}\n.flag-icon-ls.flag-icon-squared {\n background-image: url("+t(e(1046))+");\n}\n.flag-icon-lt {\n background-image: url("+t(e(1047))+");\n}\n.flag-icon-lt.flag-icon-squared {\n background-image: url("+t(e(1048))+");\n}\n.flag-icon-lu {\n background-image: url("+t(e(1049))+");\n}\n.flag-icon-lu.flag-icon-squared {\n background-image: url("+t(e(1050))+");\n}\n.flag-icon-lv {\n background-image: url("+t(e(1051))+");\n}\n.flag-icon-lv.flag-icon-squared {\n background-image: url("+t(e(1052))+");\n}\n.flag-icon-ly {\n background-image: url("+t(e(1053))+");\n}\n.flag-icon-ly.flag-icon-squared {\n background-image: url("+t(e(1054))+");\n}\n.flag-icon-ma {\n background-image: url("+t(e(1055))+");\n}\n.flag-icon-ma.flag-icon-squared {\n background-image: url("+t(e(1056))+");\n}\n.flag-icon-mc {\n background-image: url("+t(e(1057))+");\n}\n.flag-icon-mc.flag-icon-squared {\n background-image: url("+t(e(1058))+");\n}\n.flag-icon-md {\n background-image: url("+t(e(1059))+");\n}\n.flag-icon-md.flag-icon-squared {\n background-image: url("+t(e(1060))+");\n}\n.flag-icon-me {\n background-image: url("+t(e(1061))+");\n}\n.flag-icon-me.flag-icon-squared {\n background-image: url("+t(e(1062))+");\n}\n.flag-icon-mf {\n background-image: url("+t(e(1063))+");\n}\n.flag-icon-mf.flag-icon-squared {\n background-image: url("+t(e(1064))+");\n}\n.flag-icon-mg {\n background-image: url("+t(e(1065))+");\n}\n.flag-icon-mg.flag-icon-squared {\n background-image: url("+t(e(1066))+");\n}\n.flag-icon-mh {\n background-image: url("+t(e(1067))+");\n}\n.flag-icon-mh.flag-icon-squared {\n background-image: url("+t(e(1068))+");\n}\n.flag-icon-mk {\n background-image: url("+t(e(1069))+");\n}\n.flag-icon-mk.flag-icon-squared {\n background-image: url("+t(e(1070))+");\n}\n.flag-icon-ml {\n background-image: url("+t(e(1071))+");\n}\n.flag-icon-ml.flag-icon-squared {\n background-image: url("+t(e(1072))+");\n}\n.flag-icon-mm {\n background-image: url("+t(e(1073))+");\n}\n.flag-icon-mm.flag-icon-squared {\n background-image: url("+t(e(1074))+");\n}\n.flag-icon-mn {\n background-image: url("+t(e(1075))+");\n}\n.flag-icon-mn.flag-icon-squared {\n background-image: url("+t(e(1076))+");\n}\n.flag-icon-mo {\n background-image: url("+t(e(1077))+");\n}\n.flag-icon-mo.flag-icon-squared {\n background-image: url("+t(e(1078))+");\n}\n.flag-icon-mp {\n background-image: url("+t(e(1079))+");\n}\n.flag-icon-mp.flag-icon-squared {\n background-image: url("+t(e(1080))+");\n}\n.flag-icon-mq {\n background-image: url("+t(e(1081))+");\n}\n.flag-icon-mq.flag-icon-squared {\n background-image: url("+t(e(1082))+");\n}\n.flag-icon-mr {\n background-image: url("+t(e(1083))+");\n}\n.flag-icon-mr.flag-icon-squared {\n background-image: url("+t(e(1084))+");\n}\n.flag-icon-ms {\n background-image: url("+t(e(1085))+");\n}\n.flag-icon-ms.flag-icon-squared {\n background-image: url("+t(e(1086))+");\n}\n.flag-icon-mt {\n background-image: url("+t(e(1087))+");\n}\n.flag-icon-mt.flag-icon-squared {\n background-image: url("+t(e(1088))+");\n}\n.flag-icon-mu {\n background-image: url("+t(e(1089))+");\n}\n.flag-icon-mu.flag-icon-squared {\n background-image: url("+t(e(1090))+");\n}\n.flag-icon-mv {\n background-image: url("+t(e(1091))+");\n}\n.flag-icon-mv.flag-icon-squared {\n background-image: url("+t(e(1092))+");\n}\n.flag-icon-mw {\n background-image: url("+t(e(1093))+");\n}\n.flag-icon-mw.flag-icon-squared {\n background-image: url("+t(e(1094))+");\n}\n.flag-icon-mx {\n background-image: url("+t(e(1095))+");\n}\n.flag-icon-mx.flag-icon-squared {\n background-image: url("+t(e(1096))+");\n}\n.flag-icon-my {\n background-image: url("+t(e(1097))+");\n}\n.flag-icon-my.flag-icon-squared {\n background-image: url("+t(e(1098))+");\n}\n.flag-icon-mz {\n background-image: url("+t(e(1099))+");\n}\n.flag-icon-mz.flag-icon-squared {\n background-image: url("+t(e(1100))+");\n}\n.flag-icon-na {\n background-image: url("+t(e(1101))+");\n}\n.flag-icon-na.flag-icon-squared {\n background-image: url("+t(e(1102))+");\n}\n.flag-icon-nc {\n background-image: url("+t(e(1103))+");\n}\n.flag-icon-nc.flag-icon-squared {\n background-image: url("+t(e(1104))+");\n}\n.flag-icon-ne {\n background-image: url("+t(e(1105))+");\n}\n.flag-icon-ne.flag-icon-squared {\n background-image: url("+t(e(1106))+");\n}\n.flag-icon-nf {\n background-image: url("+t(e(1107))+");\n}\n.flag-icon-nf.flag-icon-squared {\n background-image: url("+t(e(1108))+");\n}\n.flag-icon-ng {\n background-image: url("+t(e(1109))+");\n}\n.flag-icon-ng.flag-icon-squared {\n background-image: url("+t(e(1110))+");\n}\n.flag-icon-ni {\n background-image: url("+t(e(1111))+");\n}\n.flag-icon-ni.flag-icon-squared {\n background-image: url("+t(e(1112))+");\n}\n.flag-icon-nl {\n background-image: url("+t(e(1113))+");\n}\n.flag-icon-nl.flag-icon-squared {\n background-image: url("+t(e(1114))+");\n}\n.flag-icon-no {\n background-image: url("+t(e(1115))+");\n}\n.flag-icon-no.flag-icon-squared {\n background-image: url("+t(e(1116))+");\n}\n.flag-icon-np {\n background-image: url("+t(e(1117))+");\n}\n.flag-icon-np.flag-icon-squared {\n background-image: url("+t(e(1118))+");\n}\n.flag-icon-nr {\n background-image: url("+t(e(1119))+");\n}\n.flag-icon-nr.flag-icon-squared {\n background-image: url("+t(e(1120))+");\n}\n.flag-icon-nu {\n background-image: url("+t(e(1121))+");\n}\n.flag-icon-nu.flag-icon-squared {\n background-image: url("+t(e(1122))+");\n}\n.flag-icon-nz {\n background-image: url("+t(e(1123))+");\n}\n.flag-icon-nz.flag-icon-squared {\n background-image: url("+t(e(1124))+");\n}\n.flag-icon-om {\n background-image: url("+t(e(1125))+");\n}\n.flag-icon-om.flag-icon-squared {\n background-image: url("+t(e(1126))+");\n}\n.flag-icon-pa {\n background-image: url("+t(e(1127))+");\n}\n.flag-icon-pa.flag-icon-squared {\n background-image: url("+t(e(1128))+");\n}\n.flag-icon-pe {\n background-image: url("+t(e(1129))+");\n}\n.flag-icon-pe.flag-icon-squared {\n background-image: url("+t(e(1130))+");\n}\n.flag-icon-pf {\n background-image: url("+t(e(1131))+");\n}\n.flag-icon-pf.flag-icon-squared {\n background-image: url("+t(e(1132))+");\n}\n.flag-icon-pg {\n background-image: url("+t(e(1133))+");\n}\n.flag-icon-pg.flag-icon-squared {\n background-image: url("+t(e(1134))+");\n}\n.flag-icon-ph {\n background-image: url("+t(e(1135))+");\n}\n.flag-icon-ph.flag-icon-squared {\n background-image: url("+t(e(1136))+");\n}\n.flag-icon-pk {\n background-image: url("+t(e(1137))+");\n}\n.flag-icon-pk.flag-icon-squared {\n background-image: url("+t(e(1138))+");\n}\n.flag-icon-pl {\n background-image: url("+t(e(1139))+");\n}\n.flag-icon-pl.flag-icon-squared {\n background-image: url("+t(e(1140))+");\n}\n.flag-icon-pm {\n background-image: url("+t(e(1141))+");\n}\n.flag-icon-pm.flag-icon-squared {\n background-image: url("+t(e(1142))+");\n}\n.flag-icon-pn {\n background-image: url("+t(e(1143))+");\n}\n.flag-icon-pn.flag-icon-squared {\n background-image: url("+t(e(1144))+");\n}\n.flag-icon-pr {\n background-image: url("+t(e(1145))+");\n}\n.flag-icon-pr.flag-icon-squared {\n background-image: url("+t(e(1146))+");\n}\n.flag-icon-ps {\n background-image: url("+t(e(1147))+");\n}\n.flag-icon-ps.flag-icon-squared {\n background-image: url("+t(e(1148))+");\n}\n.flag-icon-pt {\n background-image: url("+t(e(1149))+");\n}\n.flag-icon-pt.flag-icon-squared {\n background-image: url("+t(e(1150))+");\n}\n.flag-icon-pw {\n background-image: url("+t(e(1151))+");\n}\n.flag-icon-pw.flag-icon-squared {\n background-image: url("+t(e(1152))+");\n}\n.flag-icon-py {\n background-image: url("+t(e(1153))+");\n}\n.flag-icon-py.flag-icon-squared {\n background-image: url("+t(e(1154))+");\n}\n.flag-icon-qa {\n background-image: url("+t(e(1155))+");\n}\n.flag-icon-qa.flag-icon-squared {\n background-image: url("+t(e(1156))+");\n}\n.flag-icon-re {\n background-image: url("+t(e(1157))+");\n}\n.flag-icon-re.flag-icon-squared {\n background-image: url("+t(e(1158))+");\n}\n.flag-icon-ro {\n background-image: url("+t(e(1159))+");\n}\n.flag-icon-ro.flag-icon-squared {\n background-image: url("+t(e(1160))+");\n}\n.flag-icon-rs {\n background-image: url("+t(e(1161))+");\n}\n.flag-icon-rs.flag-icon-squared {\n background-image: url("+t(e(1162))+");\n}\n.flag-icon-ru {\n background-image: url("+t(e(1163))+");\n}\n.flag-icon-ru.flag-icon-squared {\n background-image: url("+t(e(1164))+");\n}\n.flag-icon-rw {\n background-image: url("+t(e(1165))+");\n}\n.flag-icon-rw.flag-icon-squared {\n background-image: url("+t(e(1166))+");\n}\n.flag-icon-sa {\n background-image: url("+t(e(1167))+");\n}\n.flag-icon-sa.flag-icon-squared {\n background-image: url("+t(e(1168))+");\n}\n.flag-icon-sb {\n background-image: url("+t(e(1169))+");\n}\n.flag-icon-sb.flag-icon-squared {\n background-image: url("+t(e(1170))+");\n}\n.flag-icon-sc {\n background-image: url("+t(e(1171))+");\n}\n.flag-icon-sc.flag-icon-squared {\n background-image: url("+t(e(1172))+");\n}\n.flag-icon-sd {\n background-image: url("+t(e(1173))+");\n}\n.flag-icon-sd.flag-icon-squared {\n background-image: url("+t(e(1174))+");\n}\n.flag-icon-se {\n background-image: url("+t(e(1175))+");\n}\n.flag-icon-se.flag-icon-squared {\n background-image: url("+t(e(1176))+");\n}\n.flag-icon-sg {\n background-image: url("+t(e(1177))+");\n}\n.flag-icon-sg.flag-icon-squared {\n background-image: url("+t(e(1178))+");\n}\n.flag-icon-sh {\n background-image: url("+t(e(1179))+");\n}\n.flag-icon-sh.flag-icon-squared {\n background-image: url("+t(e(1180))+");\n}\n.flag-icon-si {\n background-image: url("+t(e(1181))+");\n}\n.flag-icon-si.flag-icon-squared {\n background-image: url("+t(e(1182))+");\n}\n.flag-icon-sj {\n background-image: url("+t(e(1183))+");\n}\n.flag-icon-sj.flag-icon-squared {\n background-image: url("+t(e(1184))+");\n}\n.flag-icon-sk {\n background-image: url("+t(e(1185))+");\n}\n.flag-icon-sk.flag-icon-squared {\n background-image: url("+t(e(1186))+");\n}\n.flag-icon-sl {\n background-image: url("+t(e(1187))+");\n}\n.flag-icon-sl.flag-icon-squared {\n background-image: url("+t(e(1188))+");\n}\n.flag-icon-sm {\n background-image: url("+t(e(1189))+");\n}\n.flag-icon-sm.flag-icon-squared {\n background-image: url("+t(e(1190))+");\n}\n.flag-icon-sn {\n background-image: url("+t(e(1191))+");\n}\n.flag-icon-sn.flag-icon-squared {\n background-image: url("+t(e(1192))+");\n}\n.flag-icon-so {\n background-image: url("+t(e(1193))+");\n}\n.flag-icon-so.flag-icon-squared {\n background-image: url("+t(e(1194))+");\n}\n.flag-icon-sr {\n background-image: url("+t(e(1195))+");\n}\n.flag-icon-sr.flag-icon-squared {\n background-image: url("+t(e(1196))+");\n}\n.flag-icon-ss {\n background-image: url("+t(e(1197))+");\n}\n.flag-icon-ss.flag-icon-squared {\n background-image: url("+t(e(1198))+");\n}\n.flag-icon-st {\n background-image: url("+t(e(1199))+");\n}\n.flag-icon-st.flag-icon-squared {\n background-image: url("+t(e(1200))+");\n}\n.flag-icon-sv {\n background-image: url("+t(e(1201))+");\n}\n.flag-icon-sv.flag-icon-squared {\n background-image: url("+t(e(1202))+");\n}\n.flag-icon-sx {\n background-image: url("+t(e(1203))+");\n}\n.flag-icon-sx.flag-icon-squared {\n background-image: url("+t(e(1204))+");\n}\n.flag-icon-sy {\n background-image: url("+t(e(1205))+");\n}\n.flag-icon-sy.flag-icon-squared {\n background-image: url("+t(e(1206))+");\n}\n.flag-icon-sz {\n background-image: url("+t(e(1207))+");\n}\n.flag-icon-sz.flag-icon-squared {\n background-image: url("+t(e(1208))+");\n}\n.flag-icon-tc {\n background-image: url("+t(e(1209))+");\n}\n.flag-icon-tc.flag-icon-squared {\n background-image: url("+t(e(1210))+");\n}\n.flag-icon-td {\n background-image: url("+t(e(1211))+");\n}\n.flag-icon-td.flag-icon-squared {\n background-image: url("+t(e(1212))+");\n}\n.flag-icon-tf {\n background-image: url("+t(e(1213))+");\n}\n.flag-icon-tf.flag-icon-squared {\n background-image: url("+t(e(1214))+");\n}\n.flag-icon-tg {\n background-image: url("+t(e(1215))+");\n}\n.flag-icon-tg.flag-icon-squared {\n background-image: url("+t(e(1216))+");\n}\n.flag-icon-th {\n background-image: url("+t(e(1217))+");\n}\n.flag-icon-th.flag-icon-squared {\n background-image: url("+t(e(1218))+");\n}\n.flag-icon-tj {\n background-image: url("+t(e(1219))+");\n}\n.flag-icon-tj.flag-icon-squared {\n background-image: url("+t(e(1220))+");\n}\n.flag-icon-tk {\n background-image: url("+t(e(1221))+");\n}\n.flag-icon-tk.flag-icon-squared {\n background-image: url("+t(e(1222))+");\n}\n.flag-icon-tl {\n background-image: url("+t(e(1223))+");\n}\n.flag-icon-tl.flag-icon-squared {\n background-image: url("+t(e(1224))+");\n}\n.flag-icon-tm {\n background-image: url("+t(e(1225))+");\n}\n.flag-icon-tm.flag-icon-squared {\n background-image: url("+t(e(1226))+");\n}\n.flag-icon-tn {\n background-image: url("+t(e(1227))+");\n}\n.flag-icon-tn.flag-icon-squared {\n background-image: url("+t(e(1228))+");\n}\n.flag-icon-to {\n background-image: url("+t(e(1229))+");\n}\n.flag-icon-to.flag-icon-squared {\n background-image: url("+t(e(1230))+");\n}\n.flag-icon-tr {\n background-image: url("+t(e(1231))+");\n}\n.flag-icon-tr.flag-icon-squared {\n background-image: url("+t(e(1232))+");\n}\n.flag-icon-tt {\n background-image: url("+t(e(1233))+");\n}\n.flag-icon-tt.flag-icon-squared {\n background-image: url("+t(e(1234))+");\n}\n.flag-icon-tv {\n background-image: url("+t(e(1235))+");\n}\n.flag-icon-tv.flag-icon-squared {\n background-image: url("+t(e(1236))+");\n}\n.flag-icon-tw {\n background-image: url("+t(e(1237))+");\n}\n.flag-icon-tw.flag-icon-squared {\n background-image: url("+t(e(1238))+");\n}\n.flag-icon-tz {\n background-image: url("+t(e(1239))+");\n}\n.flag-icon-tz.flag-icon-squared {\n background-image: url("+t(e(1240))+");\n}\n.flag-icon-ua {\n background-image: url("+t(e(1241))+");\n}\n.flag-icon-ua.flag-icon-squared {\n background-image: url("+t(e(1242))+");\n}\n.flag-icon-ug {\n background-image: url("+t(e(1243))+");\n}\n.flag-icon-ug.flag-icon-squared {\n background-image: url("+t(e(1244))+");\n}\n.flag-icon-um {\n background-image: url("+t(e(1245))+");\n}\n.flag-icon-um.flag-icon-squared {\n background-image: url("+t(e(1246))+");\n}\n.flag-icon-us {\n background-image: url("+t(e(1247))+");\n}\n.flag-icon-us.flag-icon-squared {\n background-image: url("+t(e(1248))+");\n}\n.flag-icon-uy {\n background-image: url("+t(e(1249))+");\n}\n.flag-icon-uy.flag-icon-squared {\n background-image: url("+t(e(1250))+");\n}\n.flag-icon-uz {\n background-image: url("+t(e(1251))+");\n}\n.flag-icon-uz.flag-icon-squared {\n background-image: url("+t(e(1252))+");\n}\n.flag-icon-va {\n background-image: url("+t(e(1253))+");\n}\n.flag-icon-va.flag-icon-squared {\n background-image: url("+t(e(1254))+");\n}\n.flag-icon-vc {\n background-image: url("+t(e(1255))+");\n}\n.flag-icon-vc.flag-icon-squared {\n background-image: url("+t(e(1256))+");\n}\n.flag-icon-ve {\n background-image: url("+t(e(1257))+");\n}\n.flag-icon-ve.flag-icon-squared {\n background-image: url("+t(e(1258))+");\n}\n.flag-icon-vg {\n background-image: url("+t(e(1259))+");\n}\n.flag-icon-vg.flag-icon-squared {\n background-image: url("+t(e(1260))+");\n}\n.flag-icon-vi {\n background-image: url("+t(e(1261))+");\n}\n.flag-icon-vi.flag-icon-squared {\n background-image: url("+t(e(1262))+");\n}\n.flag-icon-vn {\n background-image: url("+t(e(1263))+");\n}\n.flag-icon-vn.flag-icon-squared {\n background-image: url("+t(e(1264))+");\n}\n.flag-icon-vu {\n background-image: url("+t(e(1265))+");\n}\n.flag-icon-vu.flag-icon-squared {\n background-image: url("+t(e(1266))+");\n}\n.flag-icon-wf {\n background-image: url("+t(e(1267))+");\n}\n.flag-icon-wf.flag-icon-squared {\n background-image: url("+t(e(1268))+");\n}\n.flag-icon-ws {\n background-image: url("+t(e(1269))+");\n}\n.flag-icon-ws.flag-icon-squared {\n background-image: url("+t(e(1270))+");\n}\n.flag-icon-ye {\n background-image: url("+t(e(1271))+");\n}\n.flag-icon-ye.flag-icon-squared {\n background-image: url("+t(e(1272))+");\n}\n.flag-icon-yt {\n background-image: url("+t(e(1273))+");\n}\n.flag-icon-yt.flag-icon-squared {\n background-image: url("+t(e(1274))+");\n}\n.flag-icon-za {\n background-image: url("+t(e(1275))+");\n}\n.flag-icon-za.flag-icon-squared {\n background-image: url("+t(e(1276))+");\n}\n.flag-icon-zm {\n background-image: url("+t(e(1277))+");\n}\n.flag-icon-zm.flag-icon-squared {\n background-image: url("+t(e(1278))+");\n}\n.flag-icon-zw {\n background-image: url("+t(e(1279))+");\n}\n.flag-icon-zw.flag-icon-squared {\n background-image: url("+t(e(1280))+");\n}\n.flag-icon-es-ct {\n background-image: url("+t(e(1281))+");\n}\n.flag-icon-es-ct.flag-icon-squared {\n background-image: url("+t(e(1282))+");\n}\n.flag-icon-eu {\n background-image: url("+t(e(1283))+");\n}\n.flag-icon-eu.flag-icon-squared {\n background-image: url("+t(e(1284))+");\n}\n.flag-icon-gb-eng {\n background-image: url("+t(e(1285))+");\n}\n.flag-icon-gb-eng.flag-icon-squared {\n background-image: url("+t(e(1286))+");\n}\n.flag-icon-gb-nir {\n background-image: url("+t(e(1287))+");\n}\n.flag-icon-gb-nir.flag-icon-squared {\n background-image: url("+t(e(1288))+");\n}\n.flag-icon-gb-sct {\n background-image: url("+t(e(1289))+");\n}\n.flag-icon-gb-sct.flag-icon-squared {\n background-image: url("+t(e(1290))+");\n}\n.flag-icon-gb-wls {\n background-image: url("+t(e(1291))+");\n}\n.flag-icon-gb-wls.flag-icon-squared {\n background-image: url("+t(e(1292))+");\n}\n.flag-icon-un {\n background-image: url("+t(e(1293))+");\n}\n.flag-icon-un.flag-icon-squared {\n background-image: url("+t(e(1294))+");\n}\n",""])},function(n,o,e){n.exports=e.p+"img/ad_2d9288138275b189625c8c2c264648ec.svg"},function(n,o,e){n.exports=e.p+"img/ad_800207334fe3f06f5cefab0e161ee27d.svg"},function(n,o,e){n.exports=e.p+"img/ae_998cc1fc1b86c9e1f5e381ed49bcb73c.svg"},function(n,o,e){n.exports=e.p+"img/ae_8fc34d937ede25b6e171274b804b1e7f.svg"},function(n,o,e){n.exports=e.p+"img/af_1e73c9eec7a1fe8d8a4a28de746bb09c.svg"},function(n,o,e){n.exports=e.p+"img/af_ddee87a8c4cdbc2a60b5d4ddc3a1549a.svg"},function(n,o,e){n.exports=e.p+"img/ag_b8b828913dc2d38b6afaed59032f2ad9.svg"},function(n,o,e){n.exports=e.p+"img/ag_441882c5d5489780f1ab6b44927e5cd3.svg"},function(n,o,e){n.exports=e.p+"img/ai_7b4552df49750bda95a7fb860851ba60.svg"},function(n,o,e){n.exports=e.p+"img/ai_377c542ad344b6c40fd30645601fdb01.svg"},function(n,o,e){n.exports=e.p+"img/al_4ed11fa46f929442468e9904abdbcc4a.svg"},function(n,o,e){n.exports=e.p+"img/al_0663234670e1d6679628d6f4fbae4e90.svg"},function(n,o,e){n.exports=e.p+"img/am_cb2561270555c1b1e80318bc637c05ea.svg"},function(n,o,e){n.exports=e.p+"img/am_41e6105650bb108b46e153f4f043e027.svg"},function(n,o,e){n.exports=e.p+"img/ao_b69218a9dc7ff91ce97305c35b9f8991.svg"},function(n,o,e){n.exports=e.p+"img/ao_3e1baa0864a908f0cb27d06e155300ba.svg"},function(n,o,e){n.exports=e.p+"img/aq_02ad59b3dcbdd872f74d3c112f474794.svg"},function(n,o,e){n.exports=e.p+"img/aq_328821fe6adacfa7bee4f57da5d4e5c6.svg"},function(n,o,e){n.exports=e.p+"img/ar_5261e632249ca9ab5b916055603be1f6.svg"},function(n,o,e){n.exports=e.p+"img/ar_53647ae9f056d46e03205f791f2b66e3.svg"},function(n,o,e){n.exports=e.p+"img/as_23e6ae7d55de1077626007fdfe9a5822.svg"},function(n,o,e){n.exports=e.p+"img/as_078ba7453c7f253d3f2ceea4b8b57d37.svg"},function(n,o,e){n.exports=e.p+"img/at_fa4cf0437de30e8cbf8952b91ffbbc3a.svg"},function(n,o,e){n.exports=e.p+"img/at_0721b30720785a8a481ea634b50445ff.svg"},function(n,o,e){n.exports=e.p+"img/au_bb307e7fab6969ba6d3ff7d2ceeb6288.svg"},function(n,o,e){n.exports=e.p+"img/au_f6b7907ce4405df5f8c7d1abbbadafd5.svg"},function(n,o,e){n.exports=e.p+"img/aw_3f52fb17e14398c3a3d8e5cece4f9009.svg"},function(n,o,e){n.exports=e.p+"img/aw_0cd7e031771900e86d3fe8dcd81e5556.svg"},function(n,o,e){n.exports=e.p+"img/ax_f8c4019f81d13aade8e732ab4a6baf32.svg"},function(n,o,e){n.exports=e.p+"img/ax_e939bf2ecb653b16e31928f62f14161b.svg"},function(n,o,e){n.exports=e.p+"img/az_198dbef38643afbd74b6d1cbe6da9ec8.svg"},function(n,o,e){n.exports=e.p+"img/az_1edff1247e1846c4e074a479684ea6ee.svg"},function(n,o,e){n.exports=e.p+"img/ba_7d6f56d23d025c0f0368ac2f85d7f8af.svg"},function(n,o,e){n.exports=e.p+"img/ba_d5ef14f05acaac11a4844e9b3bbedb00.svg"},function(n,o,e){n.exports=e.p+"img/bb_fe3ac3fea6f1abd9cfce0635cc6d610b.svg"},function(n,o,e){n.exports=e.p+"img/bb_0c916c1c17d5652f5e92b773aa1d4e2a.svg"},function(n,o,e){n.exports=e.p+"img/bd_a7978d3d0cb45d9a6dfae8569f7c9969.svg"},function(n,o,e){n.exports=e.p+"img/bd_b2af31760187b0f75eb6789dda71f62f.svg"},function(n,o,e){n.exports=e.p+"img/be_5739940da79d5fa8e595e64c05669c2a.svg"},function(n,o,e){n.exports=e.p+"img/be_f34903cc86f134e4aa0aab9ff6a9e571.svg"},function(n,o,e){n.exports=e.p+"img/bf_57907e6611d0ab08eed5631443cdd447.svg"},function(n,o,e){n.exports=e.p+"img/bf_348494c4020e910a1c5ebf26ad17c27b.svg"},function(n,o,e){n.exports=e.p+"img/bg_494aa5696f310b06328d4768c4bacdcc.svg"},function(n,o,e){n.exports=e.p+"img/bg_44d83f951206160867dedeb992217279.svg"},function(n,o,e){n.exports=e.p+"img/bh_7510653e469a48d869e109f7cc5fe930.svg"},function(n,o,e){n.exports=e.p+"img/bh_18fac7d81bf6f7575b9f7486ee55cfcd.svg"},function(n,o,e){n.exports=e.p+"img/bi_12a40d8db0b02233e8bdfe888231bfdb.svg"},function(n,o,e){n.exports=e.p+"img/bi_d0615c777a4d8ada254341565c49bcd5.svg"},function(n,o,e){n.exports=e.p+"img/bj_5561ec954d9c2ec533400b805354a4b6.svg"},function(n,o,e){n.exports=e.p+"img/bj_22430301448ceea1471d979ca319be92.svg"},function(n,o,e){n.exports=e.p+"img/bl_2a496da9f0ccf063b143d591045f587a.svg"},function(n,o,e){n.exports=e.p+"img/bl_2deb442f266b054738dc4389f509a553.svg"},function(n,o,e){n.exports=e.p+"img/bm_012b04b78dff697d63abb50a1193144c.svg"},function(n,o,e){n.exports=e.p+"img/bm_f2a17828e24a83b7bb4e980543c5fab6.svg"},function(n,o,e){n.exports=e.p+"img/bn_f6d5f4005cca9ebb9883e5fb4e3edba9.svg"},function(n,o,e){n.exports=e.p+"img/bn_c5b91605c852ec62583c5e7498a9f4c5.svg"},function(n,o,e){n.exports=e.p+"img/bo_5f3fef091d666ea0ed093b1a427eac1f.svg"},function(n,o,e){n.exports=e.p+"img/bo_2b6773a9f72cc831c5fd8ac5a2115576.svg"},function(n,o,e){n.exports=e.p+"img/bq_fda6c02c937beae291172cd3f50df39c.svg"},function(n,o,e){n.exports=e.p+"img/bq_8c6f85c7ffea34a1d11596e9945f112a.svg"},function(n,o,e){n.exports=e.p+"img/br_a31e25766b6f0ba6bea0e6bf7d8e91af.svg"},function(n,o,e){n.exports=e.p+"img/br_a30c10f8643bb31ef60f65958865a812.svg"},function(n,o,e){n.exports=e.p+"img/bs_cf40c6afb10d012e938c1fc4975301db.svg"},function(n,o,e){n.exports=e.p+"img/bs_0f30e82c7146b9138138a31810ae9e1e.svg"},function(n,o,e){n.exports=e.p+"img/bt_87d65251ab5b878dd029615dd4794a8e.svg"},function(n,o,e){n.exports=e.p+"img/bt_508393deb13245e36ff088316dbcd5da.svg"},function(n,o,e){n.exports=e.p+"img/bv_4fbc14ad662107c170024061b40f6302.svg"},function(n,o,e){n.exports=e.p+"img/bv_ce747379b653d0c81d931cd25779c857.svg"},function(n,o,e){n.exports=e.p+"img/bw_15ed460a57847531507e5ba7201597b5.svg"},function(n,o,e){n.exports=e.p+"img/bw_5f11a0beed3ff05c3accc5df7e42fd66.svg"},function(n,o,e){n.exports=e.p+"img/by_c05c8c07ade1f9ead97ddf35a747f95b.svg"},function(n,o,e){n.exports=e.p+"img/by_9b65127c617c5268e17e0997da71885b.svg"},function(n,o,e){n.exports=e.p+"img/bz_2458dd8a8870ea822b25e1cbbd9cb0a9.svg"},function(n,o,e){n.exports=e.p+"img/bz_81f2d6419e0debccb76714ed466b0652.svg"},function(n,o,e){n.exports=e.p+"img/ca_0efb6bf1f18132e87ea2c57d9580c45c.svg"},function(n,o,e){n.exports=e.p+"img/ca_a3999867cb776b04ebddf5d9eef4f48c.svg"},function(n,o,e){n.exports=e.p+"img/cc_dd392e29d025f8df6555fbb825f3ac84.svg"},function(n,o,e){n.exports=e.p+"img/cc_e53abbf8dc50b464cbb11a76ff1ec9d6.svg"},function(n,o,e){n.exports=e.p+"img/cd_d4408d3c47a4436c01c71fe6af4825bd.svg"},function(n,o,e){n.exports=e.p+"img/cd_a3ecd8067fcd90a99ce9385abdc99f45.svg"},function(n,o,e){n.exports=e.p+"img/cf_d8dd15d37e5023c354126187fe19327f.svg"},function(n,o,e){n.exports=e.p+"img/cf_8f764c6dedaca265cead5bd746224551.svg"},function(n,o,e){n.exports=e.p+"img/cg_51ec77aa7dc9bd203501805508836662.svg"},function(n,o,e){n.exports=e.p+"img/cg_4ad6f3e8cf63bc61fc684d1e23e86899.svg"},function(n,o,e){n.exports=e.p+"img/ch_a69a50e544ff08eb122eedb7dc274cac.svg"},function(n,o,e){n.exports=e.p+"img/ch_987cb82c1cadb50c89fe1e58dec40c31.svg"},function(n,o,e){n.exports=e.p+"img/ci_11ac689d81026c7e72a1726cc5b8e435.svg"},function(n,o,e){n.exports=e.p+"img/ci_728ba64d6ecf525a8eb69909b6f62b58.svg"},function(n,o,e){n.exports=e.p+"img/ck_fe45a10b7d10b55b741114dcb7e75f48.svg"},function(n,o,e){n.exports=e.p+"img/ck_e2686b2a29a1d7e56e17214b72e4cb0a.svg"},function(n,o,e){n.exports=e.p+"img/cl_2fd895c4996f542bf3b07caba07bec6e.svg"},function(n,o,e){n.exports=e.p+"img/cl_609867ee88ac78b4aaf397a6fabe6790.svg"},function(n,o,e){n.exports=e.p+"img/cm_a56034b73ef6d0700c73206a2f72abe0.svg"},function(n,o,e){n.exports=e.p+"img/cm_94ec67b0531daa72807d39d9c7fa2123.svg"},function(n,o,e){n.exports=e.p+"img/cn_2c193ab31269f0da8be9830738325d0f.svg"},function(n,o,e){n.exports=e.p+"img/cn_3a0829042f88f0dd20060d30fd7057c2.svg"},function(n,o,e){n.exports=e.p+"img/co_c5d7116a03266225f537cb79a0b87c21.svg"},function(n,o,e){n.exports=e.p+"img/co_11131041f85f1e5ebf68667f790af409.svg"},function(n,o,e){n.exports=e.p+"img/cr_0d349fd2526b99ef265d29d840611ce6.svg"},function(n,o,e){n.exports=e.p+"img/cr_13c483a397095a9d8703d1eb46328c77.svg"},function(n,o,e){n.exports=e.p+"img/cu_1c7cc4da857495d8b44eb88d22a51e33.svg"},function(n,o,e){n.exports=e.p+"img/cu_e4f897dc1790e9f3d1adafb62d0f7fd1.svg"},function(n,o,e){n.exports=e.p+"img/cv_624a2d4d919439bbd76b1431de002c18.svg"},function(n,o,e){n.exports=e.p+"img/cv_accdfa0ea8efad323ef4711339765a4b.svg"},function(n,o,e){n.exports=e.p+"img/cw_9c06626ee2188bfd83b63be4b009cc30.svg"},function(n,o,e){n.exports=e.p+"img/cw_ae75cba57510891147b59f88c71d3584.svg"},function(n,o,e){n.exports=e.p+"img/cx_b2a59c5ce370cabebdcbd19672933e7e.svg"},function(n,o,e){n.exports=e.p+"img/cx_8142eab77f7fe4cfb349a14b4f94ce1d.svg"},function(n,o,e){n.exports=e.p+"img/cy_5e40be33df611e7bdecee279ccf3889e.svg"},function(n,o,e){n.exports=e.p+"img/cy_dbf92cb89053f06b273f767cc7dd3a8e.svg"},function(n,o,e){n.exports=e.p+"img/cz_09a9b116642e821937ffc1d777a99022.svg"},function(n,o,e){n.exports=e.p+"img/cz_b325cced526f0d4cb42b655eca7f40e4.svg"},function(n,o,e){n.exports=e.p+"img/de_246a5fcba5ed21747c2a108e5e635ec7.svg"},function(n,o,e){n.exports=e.p+"img/de_74018f0abdef885f425c141cc3244afb.svg"},function(n,o,e){n.exports=e.p+"img/dj_694ca31b23013c8f1127e23741dd54a0.svg"},function(n,o,e){n.exports=e.p+"img/dj_63e20123441e1fe6998df866aceb2a4c.svg"},function(n,o,e){n.exports=e.p+"img/dk_302b4687163f20c1e43779d2a3f671a0.svg"},function(n,o,e){n.exports=e.p+"img/dk_59a9d25f6d57f572f48c2c1eeecb0724.svg"},function(n,o,e){n.exports=e.p+"img/dm_b1635699ae7bb121d9efce1f2a881320.svg"},function(n,o,e){n.exports=e.p+"img/dm_fda8fe7071e4410604350b7ca25aeb4b.svg"},function(n,o,e){n.exports=e.p+"img/do_704fd2a9ed132ee8e42c5fc4dbea31a1.svg"},function(n,o,e){n.exports=e.p+"img/do_88a82fcc61969d9c897ca685f5020b5e.svg"},function(n,o,e){n.exports=e.p+"img/dz_0477e542720bf395ac09392db78e17a7.svg"},function(n,o,e){n.exports=e.p+"img/dz_ff15f060b5abba792024a5b144e5a31d.svg"},function(n,o,e){n.exports=e.p+"img/ec_3bafd0714678cf63330f182d9ec4cc41.svg"},function(n,o,e){n.exports=e.p+"img/ec_8fb69b7933c6f712e20572580736f7c4.svg"},function(n,o,e){n.exports=e.p+"img/ee_03c3d564daa8527441e943dab22a6e24.svg"},function(n,o,e){n.exports=e.p+"img/ee_9b43910c06e045dae08a96b7e185ca30.svg"},function(n,o,e){n.exports=e.p+"img/eg_b0aa9a4e893d49715b780350324cb985.svg"},function(n,o,e){n.exports=e.p+"img/eg_4137f1081dc73f5450aa1732b27a73eb.svg"},function(n,o,e){n.exports=e.p+"img/eh_44d979031e6ecf702d00c9d07bbfcc0c.svg"},function(n,o,e){n.exports=e.p+"img/eh_780a0a9e2e95e4971fdca31fbf97091e.svg"},function(n,o,e){n.exports=e.p+"img/er_b4ea80f7a2a8848ad55e31b9bf3afc90.svg"},function(n,o,e){n.exports=e.p+"img/er_8d5171c77e388034f48931bb77b65014.svg"},function(n,o,e){n.exports=e.p+"img/es_bcf1ab9854fa7d81fedb1115032ab465.svg"},function(n,o,e){n.exports=e.p+"img/es_361eda2a8906d9753ced8c046a754606.svg"},function(n,o,e){n.exports=e.p+"img/et_512bde19026857a0be17fa2271224762.svg"},function(n,o,e){n.exports=e.p+"img/et_a61da8e203efc6ddf8be108c074e44e9.svg"},function(n,o,e){n.exports=e.p+"img/fi_8c63a9af82c69e1e067cc51fe8251693.svg"},function(n,o,e){n.exports=e.p+"img/fi_55109a408f95186b773e8e89b5a67dcc.svg"},function(n,o,e){n.exports=e.p+"img/fj_caf72f69ced8ffea30cc3a38bcc6011e.svg"},function(n,o,e){n.exports=e.p+"img/fj_453532c2daca1423d88f079a82cfcfc5.svg"},function(n,o,e){n.exports=e.p+"img/fk_1e53dc26d87dc2ff8cdec524787eb102.svg"},function(n,o,e){n.exports=e.p+"img/fk_1bffbf9fdbc7e06d1e4ea685247c72f5.svg"},function(n,o,e){n.exports=e.p+"img/fm_2c13a5d4f618959c50fcca1b498dd393.svg"},function(n,o,e){n.exports=e.p+"img/fm_41b339f3be3f9e3f61694ab4a9086c09.svg"},function(n,o,e){n.exports=e.p+"img/fo_c2f634751d1be4f5bb02637a2648823f.svg"},function(n,o,e){n.exports=e.p+"img/fo_32019da00e4ad54d1cda9ff412d32ca1.svg"},function(n,o,e){n.exports=e.p+"img/fr_4e3ec048e64c77815332dbb34f9b6305.svg"},function(n,o,e){n.exports=e.p+"img/fr_f4529ed89ccd5521b6895e298346e71d.svg"},function(n,o,e){n.exports=e.p+"img/ga_8629ddf547aa8d81b25fba0579963c21.svg"},function(n,o,e){n.exports=e.p+"img/ga_886a7348fe2900f346fe427ffb40dbea.svg"},function(n,o,e){n.exports=e.p+"img/gb_85a97dab5b090c1a8110d27fcd570939.svg"},function(n,o,e){n.exports=e.p+"img/gb_fe60f8318501f211b9583bc6d666c874.svg"},function(n,o,e){n.exports=e.p+"img/gd_0e3d254c0cf13bf900b1eed7022fd68f.svg"},function(n,o,e){n.exports=e.p+"img/gd_7c62ce7d1f45914b82768e971aa41745.svg"},function(n,o,e){n.exports=e.p+"img/ge_a129579288ce45bca7de9c073c5e17a9.svg"},function(n,o,e){n.exports=e.p+"img/ge_49a0b418c43c1db8a679832ec0310144.svg"},function(n,o,e){n.exports=e.p+"img/gf_434bae071ab5ed1b79860ca48122b681.svg"},function(n,o,e){n.exports=e.p+"img/gf_d0185c1175c7d0fa26b1a282440d7677.svg"},function(n,o,e){n.exports=e.p+"img/gg_c447047f465ae1303de6e46c43eb0a6a.svg"},function(n,o,e){n.exports=e.p+"img/gg_02df8a5dc2a174160c2ff4febae8c1f6.svg"},function(n,o,e){n.exports=e.p+"img/gh_bb3bb60464f9de0885206ae68d817026.svg"},function(n,o,e){n.exports=e.p+"img/gh_e0ca5267471f6b47564b10068f37e874.svg"},function(n,o,e){n.exports=e.p+"img/gi_71cfe39b19a8cf801dac52745837879d.svg"},function(n,o,e){n.exports=e.p+"img/gi_1afed1e43b3df70621911e848165db4f.svg"},function(n,o,e){n.exports=e.p+"img/gl_1495643c89bb2002c8d1af03cd3d68b7.svg"},function(n,o,e){n.exports=e.p+"img/gl_59e1835690dfbbb0414e59a72686b054.svg"},function(n,o,e){n.exports=e.p+"img/gm_39937d8fd860274df069f97aefc58e15.svg"},function(n,o,e){n.exports=e.p+"img/gm_6b4107900a93999092ef63fb4b99b171.svg"},function(n,o,e){n.exports=e.p+"img/gn_e2dcda47e6c4a060104aaa7be670bf86.svg"},function(n,o,e){n.exports=e.p+"img/gn_0798100ed78e72cc9070bb01924cba7e.svg"},function(n,o,e){n.exports=e.p+"img/gp_0dcdf9660c568a30d3dbf8caf64e9d42.svg"},function(n,o,e){n.exports=e.p+"img/gp_8fc39c39ffec8d93e550676fec3b8b56.svg"},function(n,o,e){n.exports=e.p+"img/gq_c095a0d44d955f381d95bc1223c5a74f.svg"},function(n,o,e){n.exports=e.p+"img/gq_88946f8ad223fc1224a03988295e4849.svg"},function(n,o,e){n.exports=e.p+"img/gr_334890b69eef86b49a9083dcc2f33d31.svg"},function(n,o,e){n.exports=e.p+"img/gr_dcc2c8657fa2795dda11f625a3fd5d67.svg"},function(n,o,e){n.exports=e.p+"img/gs_21f7c99f17bb19ebe4b9921b7fa01afc.svg"},function(n,o,e){n.exports=e.p+"img/gs_1067356806f9346264da936cc4c9e120.svg"},function(n,o,e){n.exports=e.p+"img/gt_01ce618dccdf1c3af88fc6cab6c375e9.svg"},function(n,o,e){n.exports=e.p+"img/gt_4eea9e03835a6042e803aae0c5103137.svg"},function(n,o,e){n.exports=e.p+"img/gu_beb28cdd728df39cc5016605a594cc99.svg"},function(n,o,e){n.exports=e.p+"img/gu_d4375e9d037d29bc430f6b8f2591514e.svg"},function(n,o,e){n.exports=e.p+"img/gw_f0742332f72950dc2c88c2793ffe423f.svg"},function(n,o,e){n.exports=e.p+"img/gw_1ea244637aa5bc1fb63541b77e6a54c0.svg"},function(n,o,e){n.exports=e.p+"img/gy_cbacc8b88ee72a8dcf56632a2b2b947d.svg"},function(n,o,e){n.exports=e.p+"img/gy_333d94bf559357540545c39f94cb12ef.svg"},function(n,o,e){n.exports=e.p+"img/hk_029a6bef7507e48f79319f007585eaec.svg"},function(n,o,e){n.exports=e.p+"img/hk_50fa2f99e1b35759629a6399ea58a5c6.svg"},function(n,o,e){n.exports=e.p+"img/hm_8bbb5756e34452e030d2ccb14d7bf622.svg"},function(n,o,e){n.exports=e.p+"img/hm_45e61c98191d6b1210b748066ce97549.svg"},function(n,o,e){n.exports=e.p+"img/hn_db7e3de4435a912737ae15ff8c1b8130.svg"},function(n,o,e){n.exports=e.p+"img/hn_4938f675b80bdc7e5ec2768cf4c09c18.svg"},function(n,o,e){n.exports=e.p+"img/hr_176d2d57842eb1084e5363276bcaa988.svg"},function(n,o,e){n.exports=e.p+"img/hr_635a60933b2268045706360f55b7b477.svg"},function(n,o,e){n.exports=e.p+"img/ht_5f6a49d0ed1c19657da2392ce95dc7fe.svg"},function(n,o,e){n.exports=e.p+"img/ht_06eefed919d3723c507764ee01357a2e.svg"},function(n,o,e){n.exports=e.p+"img/hu_d1065faa141b030f4d6317927525ec32.svg"},function(n,o,e){n.exports=e.p+"img/hu_a38286595b4408dcfabeea890b327320.svg"},function(n,o,e){n.exports=e.p+"img/id_e8f1c8799e91c132917570b3442d4ed2.svg"},function(n,o,e){n.exports=e.p+"img/id_cd7ecc1e34dd7b23af6e87d25499a77a.svg"},function(n,o,e){n.exports=e.p+"img/ie_deca9e10a3bd63cbb1cc783d2fc85625.svg"},function(n,o,e){n.exports=e.p+"img/ie_ce6c7d810f03854cd7517de4dad68c5d.svg"},function(n,o,e){n.exports=e.p+"img/il_ad7a2d12e6947b430bc763470066d10a.svg"},function(n,o,e){n.exports=e.p+"img/il_5a12c248e7badb386042c6f20160aef6.svg"},function(n,o,e){n.exports=e.p+"img/im_07fac2afc75f3b5d1c234ea32738512f.svg"},function(n,o,e){n.exports=e.p+"img/im_f6e8452ca63057270d6e65c2688bfa12.svg"},function(n,o,e){n.exports=e.p+"img/in_98c5671706065988ddff35d83a2cadbb.svg"},function(n,o,e){n.exports=e.p+"img/in_f1c7c9bef4ab67d1e4a6cda4f63eb86c.svg"},function(n,o,e){n.exports=e.p+"img/io_7fc155e7fac8126870876572461fe95b.svg"},function(n,o,e){n.exports=e.p+"img/io_1734998df85efc34d79d0fb154fffd7d.svg"},function(n,o,e){n.exports=e.p+"img/iq_77fca3a16e9b7d1b1de65cd1ae6c4973.svg"},function(n,o,e){n.exports=e.p+"img/iq_a632108725e2eb4eebf2bc82161185d3.svg"},function(n,o,e){n.exports=e.p+"img/ir_28b0fb3b3d83de326b81a1668e21beb6.svg"},function(n,o,e){n.exports=e.p+"img/ir_1a62e10d6cfe077c86a38c4c5e8215e5.svg"},function(n,o,e){n.exports=e.p+"img/is_ba30d1eb1308572f96dc27307903152d.svg"},function(n,o,e){n.exports=e.p+"img/is_2c3b9decb9e6eeff88565452a4be54f6.svg"},function(n,o,e){n.exports=e.p+"img/it_5a3412cbe8f690dc5dfc92c3b8b68001.svg"},function(n,o,e){n.exports=e.p+"img/it_15a1f288182170a580964fb8a64248d7.svg"},function(n,o,e){n.exports=e.p+"img/je_a2bead8f5c6abd826fe5b5e8c52901b4.svg"},function(n,o,e){n.exports=e.p+"img/je_12bf2a5fe22bbdbcf5b5187920ed633e.svg"},function(n,o,e){n.exports=e.p+"img/jm_c5279e8583934fd4fcc2b95faab316c9.svg"},function(n,o,e){n.exports=e.p+"img/jm_1b388cb263bd368e45888104001165b2.svg"},function(n,o,e){n.exports=e.p+"img/jo_5806167645b758207aeb910e04e25ecf.svg"},function(n,o,e){n.exports=e.p+"img/jo_e0c3d125e44478b3c9fc62c9c7b07951.svg"},function(n,o,e){n.exports=e.p+"img/jp_28157b5298df82905d87061bfe56788c.svg"},function(n,o,e){n.exports=e.p+"img/jp_b5b509c87244a9ff54e87d54f97d64bd.svg"},function(n,o,e){n.exports=e.p+"img/ke_ac8b7d8174a8767fefb6aa4a648e9024.svg"},function(n,o,e){n.exports=e.p+"img/ke_8db0f5f99c8a152df9a5386e54302cab.svg"},function(n,o,e){n.exports=e.p+"img/kg_0e8c2a1deb7a97d5d6fae34edf6fffe0.svg"},function(n,o,e){n.exports=e.p+"img/kg_20cdf6156992570d17d7e923af3dd9d9.svg"},function(n,o,e){n.exports=e.p+"img/kh_add3236a32912b953efd4bcba465536c.svg"},function(n,o,e){n.exports=e.p+"img/kh_2be5f19d71be932f32fbfe74572384b5.svg"},function(n,o,e){n.exports=e.p+"img/ki_db9ce4a8eedd3429844cb999147e4e05.svg"},function(n,o,e){n.exports=e.p+"img/ki_84841933e626d7194ab99001eaffcca7.svg"},function(n,o,e){n.exports=e.p+"img/km_05c0e1c1d234ec535e809a8711e6f779.svg"},function(n,o,e){n.exports=e.p+"img/km_86ad579fab8211512f200facfb700eaf.svg"},function(n,o,e){n.exports=e.p+"img/kn_8d2a2bac0a4bec64f61798ef6c86046b.svg"},function(n,o,e){n.exports=e.p+"img/kn_a1e5c90bb158a324df6f2f416b58a1a5.svg"},function(n,o,e){n.exports=e.p+"img/kp_fc45ba59283feb5ac07259425091029e.svg"},function(n,o,e){n.exports=e.p+"img/kp_bab86a2769bae956735f43562d7a0a6e.svg"},function(n,o,e){n.exports=e.p+"img/kr_472436a2cd7adcfb81854d5e9d45267b.svg"},function(n,o,e){n.exports=e.p+"img/kr_7ce5a14098bfd2fb03e05cb0d1e178b4.svg"},function(n,o,e){n.exports=e.p+"img/kw_8758e4ab9960cbd0372b2bdbb5a97db4.svg"},function(n,o,e){n.exports=e.p+"img/kw_0a1e78f001df0d3a9a4657ad20df9d20.svg"},function(n,o,e){n.exports=e.p+"img/ky_bc2f4070b8aede23d93492f15b23af52.svg"},function(n,o,e){n.exports=e.p+"img/ky_58b6db257c2227ed4023905121077fa6.svg"},function(n,o,e){n.exports=e.p+"img/kz_765abf25f0c5a3107513c0d71b66ea98.svg"},function(n,o,e){n.exports=e.p+"img/kz_0855baa1155ef2663125457d2f27fb81.svg"},function(n,o,e){n.exports=e.p+"img/la_d4742a0bc73e9af721f7b7e6c08c4720.svg"},function(n,o,e){n.exports=e.p+"img/la_635b3d0bd4b2f2854bff71670f72d22f.svg"},function(n,o,e){n.exports=e.p+"img/lb_c43e467ffa79b69e102a3242d03863ef.svg"},function(n,o,e){n.exports=e.p+"img/lb_bdba8149d35cfa3642a7fddb7d204e19.svg"},function(n,o,e){n.exports=e.p+"img/lc_318596539572196c7f62fc47fc2a4e5e.svg"},function(n,o,e){n.exports=e.p+"img/lc_5ad24b4c23e1c0240d15d4de8daf6103.svg"},function(n,o,e){n.exports=e.p+"img/li_7f2cb3e761858cd6cd0dad1e9a99c7b4.svg"},function(n,o,e){n.exports=e.p+"img/li_f37f498e8d8d43d49133b6b2de2b447b.svg"},function(n,o,e){n.exports=e.p+"img/lk_f8d21a6b463aa47f76f4eaaa36497fca.svg"},function(n,o,e){n.exports=e.p+"img/lk_3ce70e5002961066169f54aff5492201.svg"},function(n,o,e){n.exports=e.p+"img/lr_e026e0f7f0697fe0dd3cf3f86443b851.svg"},function(n,o,e){n.exports=e.p+"img/lr_e3059e9827267ac9bf36de53a29cb0a8.svg"},function(n,o,e){n.exports=e.p+"img/ls_6497b847f86af3b088814ff131f87ff2.svg"},function(n,o,e){n.exports=e.p+"img/ls_fd0cc2e17bcb57d703a83d0079c316bd.svg"},function(n,o,e){n.exports=e.p+"img/lt_c2b153a464289ca2eda1e4c289b65c17.svg"},function(n,o,e){n.exports=e.p+"img/lt_76ec6661382ebca94b7f03e61e76e72d.svg"},function(n,o,e){n.exports=e.p+"img/lu_cad8b8baa96492b8507359b0dfaaad66.svg"},function(n,o,e){n.exports=e.p+"img/lu_57b9eece69ceaf18a2caa31327fa205d.svg"},function(n,o,e){n.exports=e.p+"img/lv_35ddb2f334c25ef94cafb8373be1bcae.svg"},function(n,o,e){n.exports=e.p+"img/lv_4838077bfe980fe615358fdc5ce4af8b.svg"},function(n,o,e){n.exports=e.p+"img/ly_41489295bb65a7891cc8a0c030689412.svg"},function(n,o,e){n.exports=e.p+"img/ly_27ae749c0846f8a5c2e256ed49faf819.svg"},function(n,o,e){n.exports=e.p+"img/ma_821b32398c1b5dbe1834770ef5f6ba61.svg"},function(n,o,e){n.exports=e.p+"img/ma_c91b74041cf00efd50fc30b8e4d91ffb.svg"},function(n,o,e){n.exports=e.p+"img/mc_37be4651b8d058120dd8cb47983e9c99.svg"},function(n,o,e){n.exports=e.p+"img/mc_04a4a202a022ccc10add49ca6cf706fd.svg"},function(n,o,e){n.exports=e.p+"img/md_824e3e16727c39d5ad3be1d767e50584.svg"},function(n,o,e){n.exports=e.p+"img/md_879bb31c43329e54330fdf47b5faced9.svg"},function(n,o,e){n.exports=e.p+"img/me_37b693f64c100e0b9a2d6be418dd4fdb.svg"},function(n,o,e){n.exports=e.p+"img/me_be3b17db49b465d383d3ac13ad8218fd.svg"},function(n,o,e){n.exports=e.p+"img/mf_d3fbe0d987afbd8149e84ca101791d16.svg"},function(n,o,e){n.exports=e.p+"img/mf_647123880ea3877d53947e8c33ecabe4.svg"},function(n,o,e){n.exports=e.p+"img/mg_fba42999241fe114d86f32140ad674c8.svg"},function(n,o,e){n.exports=e.p+"img/mg_1491077425ac44fdd5ca2a301975640e.svg"},function(n,o,e){n.exports=e.p+"img/mh_c1782cea933e24d2f7570be27ab5e12c.svg"},function(n,o,e){n.exports=e.p+"img/mh_40dbb5c2801f16957059be2ca054fca1.svg"},function(n,o,e){n.exports=e.p+"img/mk_4a879fde847db3890fea5197ef3663d1.svg"},function(n,o,e){n.exports=e.p+"img/mk_12c1fffa458d1051841446e12b5f6ae8.svg"},function(n,o,e){n.exports=e.p+"img/ml_64aa836720124c581eea7ae0d5b60443.svg"},function(n,o,e){n.exports=e.p+"img/ml_02a95bc10fc1791b510be1ecbf972359.svg"},function(n,o,e){n.exports=e.p+"img/mm_a646bac36c08c5b843f8eb9efa0ddd88.svg"},function(n,o,e){n.exports=e.p+"img/mm_95787e3a534c1ed0a1efe301f700811f.svg"},function(n,o,e){n.exports=e.p+"img/mn_5f43e0c610de2e75736483bbbd06da28.svg"},function(n,o,e){n.exports=e.p+"img/mn_7ff5bebad5607af5a3a0fbedc02f4d37.svg"},function(n,o,e){n.exports=e.p+"img/mo_012b278d37953c5a2e3e8ae12422e31e.svg"},function(n,o,e){n.exports=e.p+"img/mo_94c09d5818bb170ef91f26db40712e94.svg"},function(n,o,e){n.exports=e.p+"img/mp_bccdcb5ecffe13079a8077d6cd57263a.svg"},function(n,o,e){n.exports=e.p+"img/mp_fec806e5ccb0f18ffcadac9464333cf1.svg"},function(n,o,e){n.exports=e.p+"img/mq_9bcc4ffb912c745aa7098c0de1905eeb.svg"},function(n,o,e){n.exports=e.p+"img/mq_37d2d6810c154684782c747761c2e07c.svg"},function(n,o,e){n.exports=e.p+"img/mr_55d8f233036c23373ecf6eade8d735a1.svg"},function(n,o,e){n.exports=e.p+"img/mr_38d81da0d49d46e4227690edf3c52976.svg"},function(n,o,e){n.exports=e.p+"img/ms_ec75da93364b2dd68705a2718c551a8f.svg"},function(n,o,e){n.exports=e.p+"img/ms_830476bcbc2114c0edc9a88954f0816e.svg"},function(n,o,e){n.exports=e.p+"img/mt_07ddb919be0f617b964ce47a59528c52.svg"},function(n,o,e){n.exports=e.p+"img/mt_4f20d5a79880bb85d3733a8cea2cc22c.svg"},function(n,o,e){n.exports=e.p+"img/mu_33b7d11749d57a61797d72ab46cc0ed7.svg"},function(n,o,e){n.exports=e.p+"img/mu_fcbb9709a43b6b1f0b94cb5ae9db08be.svg"},function(n,o,e){n.exports=e.p+"img/mv_c11e6efecc84326132b226b7cf84bea5.svg"},function(n,o,e){n.exports=e.p+"img/mv_f1beedaaf3f70d20d2e962a02d98c559.svg"},function(n,o,e){n.exports=e.p+"img/mw_8627c92dc660e33b047a1ae2efe17cf9.svg"},function(n,o,e){n.exports=e.p+"img/mw_f075545eec970dd6bea4083002f29084.svg"},function(n,o,e){n.exports=e.p+"img/mx_1fcc3cf0c7e6ca135612d8b3ed399e3a.svg"},function(n,o,e){n.exports=e.p+"img/mx_4e358e43beb776d5c90cca5ffec8a2bd.svg"},function(n,o,e){n.exports=e.p+"img/my_789a6ddf349312be499c1b20096b0240.svg"},function(n,o,e){n.exports=e.p+"img/my_591d1e38714cc55a73f3b556f00afb11.svg"},function(n,o,e){n.exports=e.p+"img/mz_c8308283028cbd9a0281a61635ed3b20.svg"},function(n,o,e){n.exports=e.p+"img/mz_4fce86a88ab94af0d4719440a29bbbad.svg"},function(n,o,e){n.exports=e.p+"img/na_efac2847fb683491ca06372a63adc4d7.svg"},function(n,o,e){n.exports=e.p+"img/na_ca8997745270df3094bbff555d517db6.svg"},function(n,o,e){n.exports=e.p+"img/nc_846211decb4c6a7eaf50944147654cbd.svg"},function(n,o,e){n.exports=e.p+"img/nc_b72ab6b2a834a41cb6cfec2908bf4a78.svg"},function(n,o,e){n.exports=e.p+"img/ne_9a5589731c141e7c38d8ec613a5f0304.svg"},function(n,o,e){n.exports=e.p+"img/ne_a7f07f0ce07ab31c89770dddbf56d0c4.svg"},function(n,o,e){n.exports=e.p+"img/nf_5e07162fc6710cfed614804deb6d57f2.svg"},function(n,o,e){n.exports=e.p+"img/nf_44fe5947279a723930d2d21b45017c03.svg"},function(n,o,e){n.exports=e.p+"img/ng_ba3bb51aca71f876f6d55d8ea53f7a73.svg"},function(n,o,e){n.exports=e.p+"img/ng_f6a23478e72fa37e3b9f3869524e0dfa.svg"},function(n,o,e){n.exports=e.p+"img/ni_7affd52e71f565734b35c729fd9a69c6.svg"},function(n,o,e){n.exports=e.p+"img/ni_3f7681e7629b2dfdcb7f7c59c1e1b3e0.svg"},function(n,o,e){n.exports=e.p+"img/nl_feb9eea9ce02f8633ea8c37354a7e1cb.svg"},function(n,o,e){n.exports=e.p+"img/nl_db2b8b183dba8ab799213ee07763a43e.svg"},function(n,o,e){n.exports=e.p+"img/no_fc029595f52e23b8f04102e4e3c802c2.svg"},function(n,o,e){n.exports=e.p+"img/no_51a7ba8c6295a52f4b253b33694eecf1.svg"},function(n,o,e){n.exports=e.p+"img/np_4211aa60556333402993bda5cc007ec3.svg"},function(n,o,e){n.exports=e.p+"img/np_c28b6869e7499315df56b73fd2c42a65.svg"},function(n,o,e){n.exports=e.p+"img/nr_66dd15736f1d79053d46cb60eea52e8a.svg"},function(n,o,e){n.exports=e.p+"img/nr_61a42463d2f4031baee80bfbb4976079.svg"},function(n,o,e){n.exports=e.p+"img/nu_39cb2412fae122cbbb2ae8fc9011fed6.svg"},function(n,o,e){n.exports=e.p+"img/nu_482618606f493a8f71e79003956049a0.svg"},function(n,o,e){n.exports=e.p+"img/nz_07d3ae50c3576b59ca1cf5ef6eb1cf02.svg"},function(n,o,e){n.exports=e.p+"img/nz_d29645cfd55673bf87bf02f95bf79668.svg"},function(n,o,e){n.exports=e.p+"img/om_9170bae18fb32150c2ec4fdc6826238c.svg"},function(n,o,e){n.exports=e.p+"img/om_7171b1e2bb68f23117e15cb01ea2e90a.svg"},function(n,o,e){n.exports=e.p+"img/pa_3b4d5528e24d6aa61e049df51eb8c89f.svg"},function(n,o,e){n.exports=e.p+"img/pa_943e160a9766c67a31c681d260e00f1d.svg"},function(n,o,e){n.exports=e.p+"img/pe_fda667297974310505272d2c7ebaf723.svg"},function(n,o,e){n.exports=e.p+"img/pe_017a482a8e2647dc96dea5d770dab327.svg"},function(n,o,e){n.exports=e.p+"img/pf_b6f47989b5c69e0ab2ed87e26869a342.svg"},function(n,o,e){n.exports=e.p+"img/pf_3ac8d5bdfe5d78013f568a73dd5b4d61.svg"},function(n,o,e){n.exports=e.p+"img/pg_5c17391e78b57ac623cff8401a4e303a.svg"},function(n,o,e){n.exports=e.p+"img/pg_4359608e6d3f7f7b4c471f4fe1576b6f.svg"},function(n,o,e){n.exports=e.p+"img/ph_807a7e5ded435f887dbebed8a7d8d81f.svg"},function(n,o,e){n.exports=e.p+"img/ph_605f52201b02fa5bb8a2b99ab1389ed7.svg"},function(n,o,e){n.exports=e.p+"img/pk_fbfb5582df374e123a0d4748380f406e.svg"},function(n,o,e){n.exports=e.p+"img/pk_f76952932734f7ef0d655691158a4371.svg"},function(n,o,e){n.exports=e.p+"img/pl_6607e08cafd66147db56631c31d66cec.svg"},function(n,o,e){n.exports=e.p+"img/pl_1f4f8ec32bba1e4e2ec3f4c5fc14efc6.svg"},function(n,o,e){n.exports=e.p+"img/pm_6359f9eea5d35f2cc4d89366c20e0a26.svg"},function(n,o,e){n.exports=e.p+"img/pm_68469c3f062b2fbeab2e96715a52c798.svg"},function(n,o,e){n.exports=e.p+"img/pn_97f773cab9a46804e0d4d49d3269b3d1.svg"},function(n,o,e){n.exports=e.p+"img/pn_eb94153e3111b0694e49ac4066bbf9a8.svg"},function(n,o,e){n.exports=e.p+"img/pr_563200c5ca16c47d8db68f101700cfb6.svg"},function(n,o,e){n.exports=e.p+"img/pr_6949cd9f76c1e488de1074d5d04dc189.svg"},function(n,o,e){n.exports=e.p+"img/ps_658c8814aa70f9ef97c7be35d136e492.svg"},function(n,o,e){n.exports=e.p+"img/ps_1b8d03996bc990a274d24d660912fe66.svg"},function(n,o,e){n.exports=e.p+"img/pt_03f36e39e92b313128a702a06fe14396.svg"},function(n,o,e){n.exports=e.p+"img/pt_6143c8e6835f2dba4080dd2214db7b3f.svg"},function(n,o,e){n.exports=e.p+"img/pw_5445894875274b8709f1d6f3fd6af976.svg"},function(n,o,e){n.exports=e.p+"img/pw_069ec370e716891db264087afdcf6182.svg"},function(n,o,e){n.exports=e.p+"img/py_795e6d0e6797cfb82c1d039a39ef1387.svg"},function(n,o,e){n.exports=e.p+"img/py_f1fa6887d16e8626a2ece3b50b551718.svg"},function(n,o,e){n.exports=e.p+"img/qa_4f997308380e5dd75fff5a89723a3172.svg"},function(n,o,e){n.exports=e.p+"img/qa_29cc28337ed9450a402a45452246c160.svg"},function(n,o,e){n.exports=e.p+"img/re_9c769f63698693183e0416f99ee0ab35.svg"},function(n,o,e){n.exports=e.p+"img/re_16aa0b5b66321c1281c063ee2619ab02.svg"},function(n,o,e){n.exports=e.p+"img/ro_b091db3bf85fd316caa80e5b05cf264a.svg"},function(n,o,e){n.exports=e.p+"img/ro_488ee906d08b52610dfb7f47cb84f2e6.svg"},function(n,o,e){n.exports=e.p+"img/rs_192092d6e9f30bd5151566a79fc77cfc.svg"},function(n,o,e){n.exports=e.p+"img/rs_95f28eccd867726d728d8973386f1a9b.svg"},function(n,o,e){n.exports=e.p+"img/ru_af31e644412f6079d91279ae7b977196.svg"},function(n,o,e){n.exports=e.p+"img/ru_911c03c21a5ddc5df70b61f46589bd5d.svg"},function(n,o,e){n.exports=e.p+"img/rw_dbf846e1d345cbded1f7bed600a96965.svg"},function(n,o,e){n.exports=e.p+"img/rw_d724e841628d040ff3484698907a1dd1.svg"},function(n,o,e){n.exports=e.p+"img/sa_45e17088c50060fa0549d945bc987c24.svg"},function(n,o,e){n.exports=e.p+"img/sa_1c14b2ed39388b5bf16aa85c4b6d50bb.svg"},function(n,o,e){n.exports=e.p+"img/sb_ab93a7990b049074d06db8b0bc7b3ce2.svg"},function(n,o,e){n.exports=e.p+"img/sb_5bc69a36b0852ca3e1023a0bfc21660e.svg"},function(n,o,e){n.exports=e.p+"img/sc_5d8966f42246b186ca5ef3d2144ba158.svg"},function(n,o,e){n.exports=e.p+"img/sc_ed506f5afdd99e5f884903abf1da85d2.svg"},function(n,o,e){n.exports=e.p+"img/sd_aafc9cae603296bc1a353c32c9d0f8f2.svg"},function(n,o,e){n.exports=e.p+"img/sd_d702bafe1580a1d29a20610f75f28964.svg"},function(n,o,e){n.exports=e.p+"img/se_b54f0ef0a393bb878f1eaa549bf100f1.svg"},function(n,o,e){n.exports=e.p+"img/se_5d16ff9ec384c46df7c0261b82bc6267.svg"},function(n,o,e){n.exports=e.p+"img/sg_814c6d6547960991430a1c71871597ed.svg"},function(n,o,e){n.exports=e.p+"img/sg_279844e992ca5aa5bbf4d830b2b79be6.svg"},function(n,o,e){n.exports=e.p+"img/sh_e26b4b82312cc681dea395e1de7176e9.svg"},function(n,o,e){n.exports=e.p+"img/sh_c147b9c0254aca2a7e4e5c46931ca631.svg"},function(n,o,e){n.exports=e.p+"img/si_48107aebf18a50cd1f74f659dff023b3.svg"},function(n,o,e){n.exports=e.p+"img/si_fdc1ceeae23c149deb2006431d51737a.svg"},function(n,o,e){n.exports=e.p+"img/sj_d08937cbcc45b5b72fdbca418a465986.svg"},function(n,o,e){n.exports=e.p+"img/sj_f40433689ccd69fe698f04d5d27baf44.svg"},function(n,o,e){n.exports=e.p+"img/sk_daf75e75e18b8299db61fabcc0946af1.svg"},function(n,o,e){n.exports=e.p+"img/sk_253c193837ab28e6fbc39c28024e023f.svg"},function(n,o,e){n.exports=e.p+"img/sl_f5cb409d2dfc8009c8d8d5d193068358.svg"},function(n,o,e){n.exports=e.p+"img/sl_58ef1e3b6bff58d6f4ca6047a96fc59d.svg"},function(n,o,e){n.exports=e.p+"img/sm_890ad891911e82e4bb6444077e4c4c67.svg"},function(n,o,e){n.exports=e.p+"img/sm_d69bce00e26722bba4db9516bdd7aeb3.svg"},function(n,o,e){n.exports=e.p+"img/sn_6d85da96305f317874f735494e0ac237.svg"},function(n,o,e){n.exports=e.p+"img/sn_c1a6798abc4a04fd81139f968d305a8c.svg"},function(n,o,e){n.exports=e.p+"img/so_fd9745c3e91d65bb27e0ce1a066def8a.svg"},function(n,o,e){n.exports=e.p+"img/so_a3c1b7507d4d51368a9c9c7ef16e50c0.svg"},function(n,o,e){n.exports=e.p+"img/sr_64fb37b49bdd1d10f833926e24da7226.svg"},function(n,o,e){n.exports=e.p+"img/sr_ceae0ffa4c003d02ae6151089d91a88d.svg"},function(n,o,e){n.exports=e.p+"img/ss_5e0bad12f6f55064c3dbc63aa8e8128a.svg"},function(n,o,e){n.exports=e.p+"img/ss_c8e5f380d045c394f352a0bb77d6ff60.svg"},function(n,o,e){n.exports=e.p+"img/st_00f5130cc14dbdb86779b734730a1d9d.svg"},function(n,o,e){n.exports=e.p+"img/st_3589e34b716c7cbfb519d64c63aa656c.svg"},function(n,o,e){n.exports=e.p+"img/sv_abfac59c5ed910b2ddc7cc545c45cb17.svg"},function(n,o,e){n.exports=e.p+"img/sv_88ca96e7891e09e72a3f8c0cf2e22a7b.svg"},function(n,o,e){n.exports=e.p+"img/sx_89f96e7884f6dbcbb0496360d3937c34.svg"},function(n,o,e){n.exports=e.p+"img/sx_6c22419aeaf5deb9ca0cd85368de24bd.svg"},function(n,o,e){n.exports=e.p+"img/sy_d648066bba18b3fedf66db0fca2da5ff.svg"},function(n,o,e){n.exports=e.p+"img/sy_96bb3c224fd1a7a3f7869ca176b6ce54.svg"},function(n,o,e){n.exports=e.p+"img/sz_d00ba66465ba75f9a782e9f79944402c.svg"},function(n,o,e){n.exports=e.p+"img/sz_9ec8da3eae5c07ea00da519d29071389.svg"},function(n,o,e){n.exports=e.p+"img/tc_d01602470bf5b8c2cc51fbb9925f71a9.svg"},function(n,o,e){n.exports=e.p+"img/tc_bca9f99cb80af8a64a1249b13d08418b.svg"},function(n,o,e){n.exports=e.p+"img/td_d6ccfa17c984bf92472575c6cf018f80.svg"},function(n,o,e){n.exports=e.p+"img/td_cb622bc24400fd328947ffed78f0660a.svg"},function(n,o,e){n.exports=e.p+"img/tf_1129c04ba580e9e28171db5d40ce9f32.svg"},function(n,o,e){n.exports=e.p+"img/tf_3f87ed9137eee673a8d3799760e5c5de.svg"},function(n,o,e){n.exports=e.p+"img/tg_bf9d20b8945bd53245c9ea1e1eed2a4f.svg"},function(n,o,e){n.exports=e.p+"img/tg_aff94a793ed8d936373717694ddf3d99.svg"},function(n,o,e){n.exports=e.p+"img/th_565e3c4b62c18bb6ef101a0cf3b4c82f.svg"},function(n,o,e){n.exports=e.p+"img/th_9c1e01fcbd77919148db921c5ce77446.svg"},function(n,o,e){n.exports=e.p+"img/tj_e58f32ff84f001bc7168d27cdc241d71.svg"},function(n,o,e){n.exports=e.p+"img/tj_1793caa0c484adea27824ce612e96dfc.svg"},function(n,o,e){n.exports=e.p+"img/tk_b2df385f8dbecd292c77915242f35869.svg"},function(n,o,e){n.exports=e.p+"img/tk_e37e35bfee8ec6f39e49f95ba55b4e32.svg"},function(n,o,e){n.exports=e.p+"img/tl_547e42152a9dfb16e33dc6bc3663d712.svg"},function(n,o,e){n.exports=e.p+"img/tl_214b6f844896186fb3035180638b8a47.svg"},function(n,o,e){n.exports=e.p+"img/tm_f2dc59b2535194d31ce8778386b52164.svg"},function(n,o,e){n.exports=e.p+"img/tm_08d55ec816375fc81f1bc352977244e5.svg"},function(n,o,e){n.exports=e.p+"img/tn_98351bcb280b1151a28fc9fcf4c1d0f2.svg"},function(n,o,e){n.exports=e.p+"img/tn_34dba63bc62c862c8944dd2c827c1bf6.svg"},function(n,o,e){n.exports=e.p+"img/to_00aaa22b9af8c670b1dd4fb7855190b2.svg"},function(n,o,e){n.exports=e.p+"img/to_ee39c2dbb8ab06d415a474be5fc2beee.svg"},function(n,o,e){n.exports=e.p+"img/tr_ac4572ccd5aa06b5db888c21b07b728e.svg"},function(n,o,e){n.exports=e.p+"img/tr_d4a61f6a22324244789eda3de42ebb68.svg"},function(n,o,e){n.exports=e.p+"img/tt_333675d63b5100b2ad628b0278de708a.svg"},function(n,o,e){n.exports=e.p+"img/tt_3854b853aee040dd3a36a3bbbb526a16.svg"},function(n,o,e){n.exports=e.p+"img/tv_eda22a5dfd270426a548e811128409d4.svg"},function(n,o,e){n.exports=e.p+"img/tv_ec5c179a3c54ff54fd82ddda3569f794.svg"},function(n,o,e){n.exports=e.p+"img/tw_89a1429ae91ef356268cfdd8759b89e3.svg"},function(n,o,e){n.exports=e.p+"img/tw_7794932d0d22ed75f2e1e6f1e2fbf472.svg"},function(n,o,e){n.exports=e.p+"img/tz_ed1c43d0c76533c8e19f0e8afd0f604a.svg"},function(n,o,e){n.exports=e.p+"img/tz_206592dc6556e3cddf82e5f59dbcef24.svg"},function(n,o,e){n.exports=e.p+"img/ua_e2202cb676678f90c10a1c1a0e04afa6.svg"},function(n,o,e){n.exports=e.p+"img/ua_5196d8ea0993d5b917b04ddb206163ec.svg"},function(n,o,e){n.exports=e.p+"img/ug_f6dbcb210c928f287afbbbf2a191c724.svg"},function(n,o,e){n.exports=e.p+"img/ug_69ed4876cb991fc0c03f2ad3ca250a86.svg"},function(n,o,e){n.exports=e.p+"img/um_f4540fe0a4fe6d781318ce86cd25ec15.svg"},function(n,o,e){n.exports=e.p+"img/um_2da266d727f6a285c2c6c45404d13857.svg"},function(n,o,e){n.exports=e.p+"img/us_da1c4f85e66e46f759fe736e3f2a5b37.svg"},function(n,o,e){n.exports=e.p+"img/us_269666d513f4326441bbbdc8564c7cab.svg"},function(n,o,e){n.exports=e.p+"img/uy_2ac18c6e7d7cbee175d28bf5b7e764ad.svg"},function(n,o,e){n.exports=e.p+"img/uy_4caed1247a7d571f081e9cf2015038a9.svg"},function(n,o,e){n.exports=e.p+"img/uz_d9b782092304b93fa203f2e84a9a5c60.svg"},function(n,o,e){n.exports=e.p+"img/uz_0b281dd521d66869cfba6fc17b814b19.svg"},function(n,o,e){n.exports=e.p+"img/va_8aae3709fb23884b7c01927b3ab56c15.svg"},function(n,o,e){n.exports=e.p+"img/va_a44c6ba981a68dc7e9cd12f0c07c3e9a.svg"},function(n,o,e){n.exports=e.p+"img/vc_fc6aa8fea6b1679f5618d420705c9fdf.svg"},function(n,o,e){n.exports=e.p+"img/vc_0d52b1116574139a04da5c57a6b24b51.svg"},function(n,o,e){n.exports=e.p+"img/ve_05045bcea6cd452ff2110d8595ca1895.svg"},function(n,o,e){n.exports=e.p+"img/ve_d384c6ce97ba0ca4aecbc188e84a0670.svg"},function(n,o,e){n.exports=e.p+"img/vg_eef14ab6f09e3eaf612af872df742845.svg"},function(n,o,e){n.exports=e.p+"img/vg_4236b3592713a56c25d146f790e2a4f4.svg"},function(n,o,e){n.exports=e.p+"img/vi_2127440f728f099608ed690b93661341.svg"},function(n,o,e){n.exports=e.p+"img/vi_8a178e2ccba3c073eff08cb67977c858.svg"},function(n,o,e){n.exports=e.p+"img/vn_010b0c4c6dc4bdb48895ab271d4544c4.svg"},function(n,o,e){n.exports=e.p+"img/vn_7e156d1d24f51aca6179f2e54dec5c7c.svg"},function(n,o,e){n.exports=e.p+"img/vu_5bc20756ed74f649e3ce3722b2a9c5a1.svg"},function(n,o,e){n.exports=e.p+"img/vu_9c4c893a4c07eab2b1b6b9e5419f1785.svg"},function(n,o,e){n.exports=e.p+"img/wf_5e6aa0d6196a1db8431a4fff6937079f.svg"},function(n,o,e){n.exports=e.p+"img/wf_a10487a62b8516b7d842cfb1bcf9489f.svg"},function(n,o,e){n.exports=e.p+"img/ws_c4eb05965d7ed2e7d561e80e18dc1b68.svg"},function(n,o,e){n.exports=e.p+"img/ws_2690f3d8a35c6ca0343fe931be856dc4.svg"},function(n,o,e){n.exports=e.p+"img/ye_68c397990d00c23f85c865ba696b19fb.svg"},function(n,o,e){n.exports=e.p+"img/ye_58d8d56309a5718c3a4f31be6cdf223e.svg"},function(n,o,e){n.exports=e.p+"img/yt_0f00b1036165d69eff29d5b898873ad8.svg"},function(n,o,e){n.exports=e.p+"img/yt_a1387f1c257ea0838b27317a6606575f.svg"},function(n,o,e){n.exports=e.p+"img/za_177080d3e910a20e5b030f916d77760a.svg"},function(n,o,e){n.exports=e.p+"img/za_9ed44aea09b417be8090dae8e5222232.svg"},function(n,o,e){n.exports=e.p+"img/zm_5ac3774ab0e7b84a715c175283127732.svg"},function(n,o,e){n.exports=e.p+"img/zm_402266a05380383f933eda9a8eff3fb2.svg"},function(n,o,e){n.exports=e.p+"img/zw_58e2cbd64ee1252a407f1ca815b6817f.svg"},function(n,o,e){n.exports=e.p+"img/zw_25d67323ce7c449da65ae3af13fac562.svg"},function(n,o,e){n.exports=e.p+"img/es-ct_2f1565e802d4608517d8a9796d2abe88.svg"},function(n,o,e){n.exports=e.p+"img/es-ct_e6db39f3fca00093bd7a3c2160ce0f57.svg"},function(n,o,e){n.exports=e.p+"img/eu_d8c5128679452fbb1742dc0b0fafcfe6.svg"},function(n,o,e){n.exports=e.p+"img/eu_824e473c761930ef1f65fe53a04a4f18.svg"},function(n,o,e){n.exports=e.p+"img/gb-eng_e18b270f56f90ad1f19660e70b68fb3a.svg"},function(n,o,e){n.exports=e.p+"img/gb-eng_99785a1e509f909b29d0aff772349748.svg"},function(n,o,e){n.exports=e.p+"img/gb-nir_080d05670e1d7ad2d3b7315edefa3653.svg"},function(n,o,e){n.exports=e.p+"img/gb-nir_5329af5915b425ea338f2eef0bac7af6.svg"},function(n,o,e){n.exports=e.p+"img/gb-sct_c4361672853bbab112bd4b360e6dd199.svg"},function(n,o,e){n.exports=e.p+"img/gb-sct_6231d4d57245374c7e7578275498310c.svg"},function(n,o,e){n.exports=e.p+"img/gb-wls_344dc57e2bbcc26eea7cb4f8211cb5e7.svg"},function(n,o,e){n.exports=e.p+"img/gb-wls_d67608c4a9127c21bc7236eaa82505b9.svg"},function(n,o,e){n.exports=e.p+"img/un_cc2eb7d1b1575db6532cbab447247a1b.svg"},function(n,o,e){n.exports=e.p+"img/un_424ca4dfb83e20505d9c5a92f107b151.svg"},function(n,o,e){var t=e(1296);"string"==typeof t&&(t=[[n.i,t,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};e(91)(t,r);t.locals&&(n.exports=t.locals)},function(n,o,e){var t=e(132);(n.exports=e(133)(!1)).push([n.i,"/* roboto-100normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin '),\n local('Roboto-Thin'),\n url("+t(e(1297))+") format('woff2'), \n url("+t(e(1298))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-100italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin italic'),\n local('Roboto-Thinitalic'),\n url("+t(e(1299))+") format('woff2'), \n url("+t(e(1300))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light '),\n local('Roboto-Light'),\n url("+t(e(1301))+") format('woff2'), \n url("+t(e(1302))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light italic'),\n local('Roboto-Lightitalic'),\n url("+t(e(1303))+") format('woff2'), \n url("+t(e(1304))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular '),\n local('Roboto-Regular'),\n url("+t(e(1305))+") format('woff2'), \n url("+t(e(1306))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular italic'),\n local('Roboto-Regularitalic'),\n url("+t(e(1307))+") format('woff2'), \n url("+t(e(1308))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium '),\n local('Roboto-Medium'),\n url("+t(e(1309))+") format('woff2'), \n url("+t(e(1310))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium italic'),\n local('Roboto-Mediumitalic'),\n url("+t(e(1311))+") format('woff2'), \n url("+t(e(1312))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold '),\n local('Roboto-Bold'),\n url("+t(e(1313))+") format('woff2'), \n url("+t(e(1314))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold italic'),\n local('Roboto-Bolditalic'),\n url("+t(e(1315))+") format('woff2'), \n url("+t(e(1316))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black '),\n local('Roboto-Black'),\n url("+t(e(1317))+") format('woff2'), \n url("+t(e(1318))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black italic'),\n local('Roboto-Blackitalic'),\n url("+t(e(1319))+") format('woff2'), \n url("+t(e(1320))+") format('woff'); /* Modern Browsers */\n}\n\n",""])},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-100.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-100.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-100italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-100italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-300.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-300.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-300italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-300italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-400.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-400.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-400italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-400italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-500.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-500.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-500italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-500italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-700.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-700.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-700italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-700italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-900.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-900.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-900italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-latin-900italic.woff"},function(n,o,e){var t=e(1322);"string"==typeof t&&(t=[[n.i,t,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};e(91)(t,r);t.locals&&(n.exports=t.locals)},function(n,o,e){var t=e(132);(n.exports=e(133)(!1)).push([n.i,"/* roboto-mono-100normal - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Mono Thin '),\n local('Roboto Mono-Thin'),\n url("+t(e(1323))+") format('woff2'), \n url("+t(e(1324))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-100italic - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: italic;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Mono Thin italic'),\n local('Roboto Mono-Thinitalic'),\n url("+t(e(1325))+") format('woff2'), \n url("+t(e(1326))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-300normal - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Mono Light '),\n local('Roboto Mono-Light'),\n url("+t(e(1327))+") format('woff2'), \n url("+t(e(1328))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-300italic - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Mono Light italic'),\n local('Roboto Mono-Lightitalic'),\n url("+t(e(1329))+") format('woff2'), \n url("+t(e(1330))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-400normal - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Mono Regular '),\n local('Roboto Mono-Regular'),\n url("+t(e(1331))+") format('woff2'), \n url("+t(e(1332))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-400italic - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Mono Regular italic'),\n local('Roboto Mono-Regularitalic'),\n url("+t(e(1333))+") format('woff2'), \n url("+t(e(1334))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-500normal - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Mono Medium '),\n local('Roboto Mono-Medium'),\n url("+t(e(1335))+") format('woff2'), \n url("+t(e(1336))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-500italic - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: italic;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Mono Medium italic'),\n local('Roboto Mono-Mediumitalic'),\n url("+t(e(1337))+") format('woff2'), \n url("+t(e(1338))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-700normal - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Mono Bold '),\n local('Roboto Mono-Bold'),\n url("+t(e(1339))+") format('woff2'), \n url("+t(e(1340))+") format('woff'); /* Modern Browsers */\n}\n\n/* roboto-mono-700italic - latin */\n@font-face {\n font-family: 'Roboto Mono';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Mono Bold italic'),\n local('Roboto Mono-Bolditalic'),\n url("+t(e(1341))+") format('woff2'), \n url("+t(e(1342))+") format('woff'); /* Modern Browsers */\n}\n\n",""])},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-100.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-100.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-100italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-100italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-300.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-300.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-300italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-300italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-400.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-400.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-400italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-400italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-500.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-500.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-500italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-500italic.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-700.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-700.woff"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-700italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/roboto-mono-latin-700italic.woff"},function(n,o,e){var t=e(1344);"string"==typeof t&&(t=[[n.i,t,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};e(91)(t,r);t.locals&&(n.exports=t.locals)},function(n,o,e){var t=e(132);(n.exports=e(133)(!1)).push([n.i,"/* open-sans-300normal - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Open Sans Light '),\n local('Open Sans-Light'),\n url("+t(e(1345))+") format('woff2'), \n url("+t(e(1346))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-300italic - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Open Sans Light italic'),\n local('Open Sans-Lightitalic'),\n url("+t(e(1347))+") format('woff2'), \n url("+t(e(1348))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-400normal - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Open Sans Regular '),\n local('Open Sans-Regular'),\n url("+t(e(1349))+") format('woff2'), \n url("+t(e(1350))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-400italic - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Open Sans Regular italic'),\n local('Open Sans-Regularitalic'),\n url("+t(e(1351))+") format('woff2'), \n url("+t(e(1352))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-600normal - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 600;\n src:\n local('Open Sans SemiBold '),\n local('Open Sans-SemiBold'),\n url("+t(e(1353))+") format('woff2'), \n url("+t(e(1354))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-600italic - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-display: swap;\n font-weight: 600;\n src:\n local('Open Sans SemiBold italic'),\n local('Open Sans-SemiBolditalic'),\n url("+t(e(1355))+") format('woff2'), \n url("+t(e(1356))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-700normal - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Open Sans Bold '),\n local('Open Sans-Bold'),\n url("+t(e(1357))+") format('woff2'), \n url("+t(e(1358))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-700italic - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Open Sans Bold italic'),\n local('Open Sans-Bolditalic'),\n url("+t(e(1359))+") format('woff2'), \n url("+t(e(1360))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-800normal - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: normal;\n font-display: swap;\n font-weight: 800;\n src:\n local('Open Sans ExtraBold '),\n local('Open Sans-ExtraBold'),\n url("+t(e(1361))+") format('woff2'), \n url("+t(e(1362))+") format('woff'); /* Modern Browsers */\n}\n\n/* open-sans-800italic - latin */\n@font-face {\n font-family: 'Open Sans';\n font-style: italic;\n font-display: swap;\n font-weight: 800;\n src:\n local('Open Sans ExtraBold italic'),\n local('Open Sans-ExtraBolditalic'),\n url("+t(e(1363))+") format('woff2'), \n url("+t(e(1364))+") format('woff'); /* Modern Browsers */\n}\n\n",""])},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-300.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-300.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-300italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-300italic.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-400.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-400.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-400italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-400italic.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-600.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-600.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-600italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-600italic.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-700.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-700.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-700italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-700italic.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-800.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-800.woff"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-800italic.woff2"},function(n,o,e){n.exports=e.p+"fonts/open-sans-latin-800italic.woff"},function(n,o,e){var t=e(1366);"string"==typeof t&&(t=[[n.i,t,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};e(91)(t,r);t.locals&&(n.exports=t.locals)},function(n,o){n.exports='@charset "UTF-8";\n/*!\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n/* FONT PATH\n * -------------------------- */\n@font-face {\n font-family: \'FontAwesome\';\n src: url("../fonts/fontawesome-webfont.eot?v=4.7.0");\n src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"), url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"), url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"), url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"), url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");\n font-weight: normal;\n font-style: normal; }\n\n.fa {\n display: inline-block;\n font: normal normal normal 14px/1 FontAwesome;\n font-size: inherit;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; }\n\n/* makes the font 33% larger relative to the icon container */\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -15%; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-fw {\n width: 1.28571em;\n text-align: center; }\n\n.fa-ul {\n padding-left: 0;\n margin-left: 2.14286em;\n list-style-type: none; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n position: absolute;\n left: -2.14286em;\n width: 2.14286em;\n top: 0.14286em;\n text-align: center; }\n .fa-li.fa-lg {\n left: -1.85714em; }\n\n.fa-border {\n padding: .2em .25em .15em;\n border: solid 0.08em #eee;\n border-radius: .1em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right {\n margin-left: .3em; }\n\n/* Deprecated as of 4.4.0 */\n.pull-right {\n float: right; }\n\n.pull-left {\n float: left; }\n\n.fa.pull-left {\n margin-right: .3em; }\n\n.fa.pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg); } }\n\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n position: relative;\n display: inline-block;\n width: 2em;\n height: 2em;\n line-height: 2em;\n vertical-align: middle; }\n\n.fa-stack-1x, .fa-stack-2x {\n position: absolute;\n left: 0;\n width: 100%;\n text-align: center; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n readers do not read off random characters that represent icons */\n.fa-glass:before {\n content: ""; }\n\n.fa-music:before {\n content: ""; }\n\n.fa-search:before {\n content: ""; }\n\n.fa-envelope-o:before {\n content: ""; }\n\n.fa-heart:before {\n content: ""; }\n\n.fa-star:before {\n content: ""; }\n\n.fa-star-o:before {\n content: ""; }\n\n.fa-user:before {\n content: ""; }\n\n.fa-film:before {\n content: ""; }\n\n.fa-th-large:before {\n content: ""; }\n\n.fa-th:before {\n content: ""; }\n\n.fa-th-list:before {\n content: ""; }\n\n.fa-check:before {\n content: ""; }\n\n.fa-remove:before,\n.fa-close:before,\n.fa-times:before {\n content: ""; }\n\n.fa-search-plus:before {\n content: ""; }\n\n.fa-search-minus:before {\n content: ""; }\n\n.fa-power-off:before {\n content: ""; }\n\n.fa-signal:before {\n content: ""; }\n\n.fa-gear:before,\n.fa-cog:before {\n content: ""; }\n\n.fa-trash-o:before {\n content: ""; }\n\n.fa-home:before {\n content: ""; }\n\n.fa-file-o:before {\n content: ""; }\n\n.fa-clock-o:before {\n content: ""; }\n\n.fa-road:before {\n content: ""; }\n\n.fa-download:before {\n content: ""; }\n\n.fa-arrow-circle-o-down:before {\n content: ""; }\n\n.fa-arrow-circle-o-up:before {\n content: ""; }\n\n.fa-inbox:before {\n content: ""; }\n\n.fa-play-circle-o:before {\n content: ""; }\n\n.fa-rotate-right:before,\n.fa-repeat:before {\n content: ""; }\n\n.fa-refresh:before {\n content: ""; }\n\n.fa-list-alt:before {\n content: ""; }\n\n.fa-lock:before {\n content: ""; }\n\n.fa-flag:before {\n content: ""; }\n\n.fa-headphones:before {\n content: ""; }\n\n.fa-volume-off:before {\n content: ""; }\n\n.fa-volume-down:before {\n content: ""; }\n\n.fa-volume-up:before {\n content: ""; }\n\n.fa-qrcode:before {\n content: ""; }\n\n.fa-barcode:before {\n content: ""; }\n\n.fa-tag:before {\n content: ""; }\n\n.fa-tags:before {\n content: ""; }\n\n.fa-book:before {\n content: ""; }\n\n.fa-bookmark:before {\n content: ""; }\n\n.fa-print:before {\n content: ""; }\n\n.fa-camera:before {\n content: ""; }\n\n.fa-font:before {\n content: ""; }\n\n.fa-bold:before {\n content: ""; }\n\n.fa-italic:before {\n content: ""; }\n\n.fa-text-height:before {\n content: ""; }\n\n.fa-text-width:before {\n content: ""; }\n\n.fa-align-left:before {\n content: ""; }\n\n.fa-align-center:before {\n content: ""; }\n\n.fa-align-right:before {\n content: ""; }\n\n.fa-align-justify:before {\n content: ""; }\n\n.fa-list:before {\n content: ""; }\n\n.fa-dedent:before,\n.fa-outdent:before {\n content: ""; }\n\n.fa-indent:before {\n content: ""; }\n\n.fa-video-camera:before {\n content: ""; }\n\n.fa-photo:before,\n.fa-image:before,\n.fa-picture-o:before {\n content: ""; }\n\n.fa-pencil:before {\n content: ""; }\n\n.fa-map-marker:before {\n content: ""; }\n\n.fa-adjust:before {\n content: ""; }\n\n.fa-tint:before {\n content: ""; }\n\n.fa-edit:before,\n.fa-pencil-square-o:before {\n content: ""; }\n\n.fa-share-square-o:before {\n content: ""; }\n\n.fa-check-square-o:before {\n content: ""; }\n\n.fa-arrows:before {\n content: ""; }\n\n.fa-step-backward:before {\n content: ""; }\n\n.fa-fast-backward:before {\n content: ""; }\n\n.fa-backward:before {\n content: ""; }\n\n.fa-play:before {\n content: ""; }\n\n.fa-pause:before {\n content: ""; }\n\n.fa-stop:before {\n content: ""; }\n\n.fa-forward:before {\n content: ""; }\n\n.fa-fast-forward:before {\n content: ""; }\n\n.fa-step-forward:before {\n content: ""; }\n\n.fa-eject:before {\n content: ""; }\n\n.fa-chevron-left:before {\n content: ""; }\n\n.fa-chevron-right:before {\n content: ""; }\n\n.fa-plus-circle:before {\n content: ""; }\n\n.fa-minus-circle:before {\n content: ""; }\n\n.fa-times-circle:before {\n content: ""; }\n\n.fa-check-circle:before {\n content: ""; }\n\n.fa-question-circle:before {\n content: ""; }\n\n.fa-info-circle:before {\n content: ""; }\n\n.fa-crosshairs:before {\n content: ""; }\n\n.fa-times-circle-o:before {\n content: ""; }\n\n.fa-check-circle-o:before {\n content: ""; }\n\n.fa-ban:before {\n content: ""; }\n\n.fa-arrow-left:before {\n content: ""; }\n\n.fa-arrow-right:before {\n content: ""; }\n\n.fa-arrow-up:before {\n content: ""; }\n\n.fa-arrow-down:before {\n content: ""; }\n\n.fa-mail-forward:before,\n.fa-share:before {\n content: ""; }\n\n.fa-expand:before {\n content: ""; }\n\n.fa-compress:before {\n content: ""; }\n\n.fa-plus:before {\n content: ""; }\n\n.fa-minus:before {\n content: ""; }\n\n.fa-asterisk:before {\n content: ""; }\n\n.fa-exclamation-circle:before {\n content: ""; }\n\n.fa-gift:before {\n content: ""; }\n\n.fa-leaf:before {\n content: ""; }\n\n.fa-fire:before {\n content: ""; }\n\n.fa-eye:before {\n content: ""; }\n\n.fa-eye-slash:before {\n content: ""; }\n\n.fa-warning:before,\n.fa-exclamation-triangle:before {\n content: ""; }\n\n.fa-plane:before {\n content: ""; }\n\n.fa-calendar:before {\n content: ""; }\n\n.fa-random:before {\n content: ""; }\n\n.fa-comment:before {\n content: ""; }\n\n.fa-magnet:before {\n content: ""; }\n\n.fa-chevron-up:before {\n content: ""; }\n\n.fa-chevron-down:before {\n content: ""; }\n\n.fa-retweet:before {\n content: ""; }\n\n.fa-shopping-cart:before {\n content: ""; }\n\n.fa-folder:before {\n content: ""; }\n\n.fa-folder-open:before {\n content: ""; }\n\n.fa-arrows-v:before {\n content: ""; }\n\n.fa-arrows-h:before {\n content: ""; }\n\n.fa-bar-chart-o:before,\n.fa-bar-chart:before {\n content: ""; }\n\n.fa-twitter-square:before {\n content: ""; }\n\n.fa-facebook-square:before {\n content: ""; }\n\n.fa-camera-retro:before {\n content: ""; }\n\n.fa-key:before {\n content: ""; }\n\n.fa-gears:before,\n.fa-cogs:before {\n content: ""; }\n\n.fa-comments:before {\n content: ""; }\n\n.fa-thumbs-o-up:before {\n content: ""; }\n\n.fa-thumbs-o-down:before {\n content: ""; }\n\n.fa-star-half:before {\n content: ""; }\n\n.fa-heart-o:before {\n content: ""; }\n\n.fa-sign-out:before {\n content: ""; }\n\n.fa-linkedin-square:before {\n content: ""; }\n\n.fa-thumb-tack:before {\n content: ""; }\n\n.fa-external-link:before {\n content: ""; }\n\n.fa-sign-in:before {\n content: ""; }\n\n.fa-trophy:before {\n content: ""; }\n\n.fa-github-square:before {\n content: ""; }\n\n.fa-upload:before {\n content: ""; }\n\n.fa-lemon-o:before {\n content: ""; }\n\n.fa-phone:before {\n content: ""; }\n\n.fa-square-o:before {\n content: ""; }\n\n.fa-bookmark-o:before {\n content: ""; }\n\n.fa-phone-square:before {\n content: ""; }\n\n.fa-twitter:before {\n content: ""; }\n\n.fa-facebook-f:before,\n.fa-facebook:before {\n content: ""; }\n\n.fa-github:before {\n content: ""; }\n\n.fa-unlock:before {\n content: ""; }\n\n.fa-credit-card:before {\n content: ""; }\n\n.fa-feed:before,\n.fa-rss:before {\n content: ""; }\n\n.fa-hdd-o:before {\n content: ""; }\n\n.fa-bullhorn:before {\n content: ""; }\n\n.fa-bell:before {\n content: ""; }\n\n.fa-certificate:before {\n content: ""; }\n\n.fa-hand-o-right:before {\n content: ""; }\n\n.fa-hand-o-left:before {\n content: ""; }\n\n.fa-hand-o-up:before {\n content: ""; }\n\n.fa-hand-o-down:before {\n content: ""; }\n\n.fa-arrow-circle-left:before {\n content: ""; }\n\n.fa-arrow-circle-right:before {\n content: ""; }\n\n.fa-arrow-circle-up:before {\n content: ""; }\n\n.fa-arrow-circle-down:before {\n content: ""; }\n\n.fa-globe:before {\n content: ""; }\n\n.fa-wrench:before {\n content: ""; }\n\n.fa-tasks:before {\n content: ""; }\n\n.fa-filter:before {\n content: ""; }\n\n.fa-briefcase:before {\n content: ""; }\n\n.fa-arrows-alt:before {\n content: ""; }\n\n.fa-group:before,\n.fa-users:before {\n content: ""; }\n\n.fa-chain:before,\n.fa-link:before {\n content: ""; }\n\n.fa-cloud:before {\n content: ""; }\n\n.fa-flask:before {\n content: ""; }\n\n.fa-cut:before,\n.fa-scissors:before {\n content: ""; }\n\n.fa-copy:before,\n.fa-files-o:before {\n content: ""; }\n\n.fa-paperclip:before {\n content: ""; }\n\n.fa-save:before,\n.fa-floppy-o:before {\n content: ""; }\n\n.fa-square:before {\n content: ""; }\n\n.fa-navicon:before,\n.fa-reorder:before,\n.fa-bars:before {\n content: ""; }\n\n.fa-list-ul:before {\n content: ""; }\n\n.fa-list-ol:before {\n content: ""; }\n\n.fa-strikethrough:before {\n content: ""; }\n\n.fa-underline:before {\n content: ""; }\n\n.fa-table:before {\n content: ""; }\n\n.fa-magic:before {\n content: ""; }\n\n.fa-truck:before {\n content: ""; }\n\n.fa-pinterest:before {\n content: ""; }\n\n.fa-pinterest-square:before {\n content: ""; }\n\n.fa-google-plus-square:before {\n content: ""; }\n\n.fa-google-plus:before {\n content: ""; }\n\n.fa-money:before {\n content: ""; }\n\n.fa-caret-down:before {\n content: ""; }\n\n.fa-caret-up:before {\n content: ""; }\n\n.fa-caret-left:before {\n content: ""; }\n\n.fa-caret-right:before {\n content: ""; }\n\n.fa-columns:before {\n content: ""; }\n\n.fa-unsorted:before,\n.fa-sort:before {\n content: ""; }\n\n.fa-sort-down:before,\n.fa-sort-desc:before {\n content: ""; }\n\n.fa-sort-up:before,\n.fa-sort-asc:before {\n content: ""; }\n\n.fa-envelope:before {\n content: ""; }\n\n.fa-linkedin:before {\n content: ""; }\n\n.fa-rotate-left:before,\n.fa-undo:before {\n content: ""; }\n\n.fa-legal:before,\n.fa-gavel:before {\n content: ""; }\n\n.fa-dashboard:before,\n.fa-tachometer:before {\n content: ""; }\n\n.fa-comment-o:before {\n content: ""; }\n\n.fa-comments-o:before {\n content: ""; }\n\n.fa-flash:before,\n.fa-bolt:before {\n content: ""; }\n\n.fa-sitemap:before {\n content: ""; }\n\n.fa-umbrella:before {\n content: ""; }\n\n.fa-paste:before,\n.fa-clipboard:before {\n content: ""; }\n\n.fa-lightbulb-o:before {\n content: ""; }\n\n.fa-exchange:before {\n content: ""; }\n\n.fa-cloud-download:before {\n content: ""; }\n\n.fa-cloud-upload:before {\n content: ""; }\n\n.fa-user-md:before {\n content: ""; }\n\n.fa-stethoscope:before {\n content: ""; }\n\n.fa-suitcase:before {\n content: ""; }\n\n.fa-bell-o:before {\n content: ""; }\n\n.fa-coffee:before {\n content: ""; }\n\n.fa-cutlery:before {\n content: ""; }\n\n.fa-file-text-o:before {\n content: ""; }\n\n.fa-building-o:before {\n content: ""; }\n\n.fa-hospital-o:before {\n content: ""; }\n\n.fa-ambulance:before {\n content: ""; }\n\n.fa-medkit:before {\n content: ""; }\n\n.fa-fighter-jet:before {\n content: ""; }\n\n.fa-beer:before {\n content: ""; }\n\n.fa-h-square:before {\n content: ""; }\n\n.fa-plus-square:before {\n content: ""; }\n\n.fa-angle-double-left:before {\n content: ""; }\n\n.fa-angle-double-right:before {\n content: ""; }\n\n.fa-angle-double-up:before {\n content: ""; }\n\n.fa-angle-double-down:before {\n content: ""; }\n\n.fa-angle-left:before {\n content: ""; }\n\n.fa-angle-right:before {\n content: ""; }\n\n.fa-angle-up:before {\n content: ""; }\n\n.fa-angle-down:before {\n content: ""; }\n\n.fa-desktop:before {\n content: ""; }\n\n.fa-laptop:before {\n content: ""; }\n\n.fa-tablet:before {\n content: ""; }\n\n.fa-mobile-phone:before,\n.fa-mobile:before {\n content: ""; }\n\n.fa-circle-o:before {\n content: ""; }\n\n.fa-quote-left:before {\n content: ""; }\n\n.fa-quote-right:before {\n content: ""; }\n\n.fa-spinner:before {\n content: ""; }\n\n.fa-circle:before {\n content: ""; }\n\n.fa-mail-reply:before,\n.fa-reply:before {\n content: ""; }\n\n.fa-github-alt:before {\n content: ""; }\n\n.fa-folder-o:before {\n content: ""; }\n\n.fa-folder-open-o:before {\n content: ""; }\n\n.fa-smile-o:before {\n content: ""; }\n\n.fa-frown-o:before {\n content: ""; }\n\n.fa-meh-o:before {\n content: ""; }\n\n.fa-gamepad:before {\n content: ""; }\n\n.fa-keyboard-o:before {\n content: ""; }\n\n.fa-flag-o:before {\n content: ""; }\n\n.fa-flag-checkered:before {\n content: ""; }\n\n.fa-terminal:before {\n content: ""; }\n\n.fa-code:before {\n content: ""; }\n\n.fa-mail-reply-all:before,\n.fa-reply-all:before {\n content: ""; }\n\n.fa-star-half-empty:before,\n.fa-star-half-full:before,\n.fa-star-half-o:before {\n content: ""; }\n\n.fa-location-arrow:before {\n content: ""; }\n\n.fa-crop:before {\n content: ""; }\n\n.fa-code-fork:before {\n content: ""; }\n\n.fa-unlink:before,\n.fa-chain-broken:before {\n content: ""; }\n\n.fa-question:before {\n content: ""; }\n\n.fa-info:before {\n content: ""; }\n\n.fa-exclamation:before {\n content: ""; }\n\n.fa-superscript:before {\n content: ""; }\n\n.fa-subscript:before {\n content: ""; }\n\n.fa-eraser:before {\n content: ""; }\n\n.fa-puzzle-piece:before {\n content: ""; }\n\n.fa-microphone:before {\n content: ""; }\n\n.fa-microphone-slash:before {\n content: ""; }\n\n.fa-shield:before {\n content: ""; }\n\n.fa-calendar-o:before {\n content: ""; }\n\n.fa-fire-extinguisher:before {\n content: ""; }\n\n.fa-rocket:before {\n content: ""; }\n\n.fa-maxcdn:before {\n content: ""; }\n\n.fa-chevron-circle-left:before {\n content: ""; }\n\n.fa-chevron-circle-right:before {\n content: ""; }\n\n.fa-chevron-circle-up:before {\n content: ""; }\n\n.fa-chevron-circle-down:before {\n content: ""; }\n\n.fa-html5:before {\n content: ""; }\n\n.fa-css3:before {\n content: ""; }\n\n.fa-anchor:before {\n content: ""; }\n\n.fa-unlock-alt:before {\n content: ""; }\n\n.fa-bullseye:before {\n content: ""; }\n\n.fa-ellipsis-h:before {\n content: ""; }\n\n.fa-ellipsis-v:before {\n content: ""; }\n\n.fa-rss-square:before {\n content: ""; }\n\n.fa-play-circle:before {\n content: ""; }\n\n.fa-ticket:before {\n content: ""; }\n\n.fa-minus-square:before {\n content: ""; }\n\n.fa-minus-square-o:before {\n content: ""; }\n\n.fa-level-up:before {\n content: ""; }\n\n.fa-level-down:before {\n content: ""; }\n\n.fa-check-square:before {\n content: ""; }\n\n.fa-pencil-square:before {\n content: ""; }\n\n.fa-external-link-square:before {\n content: ""; }\n\n.fa-share-square:before {\n content: ""; }\n\n.fa-compass:before {\n content: ""; }\n\n.fa-toggle-down:before,\n.fa-caret-square-o-down:before {\n content: ""; }\n\n.fa-toggle-up:before,\n.fa-caret-square-o-up:before {\n content: ""; }\n\n.fa-toggle-right:before,\n.fa-caret-square-o-right:before {\n content: ""; }\n\n.fa-euro:before,\n.fa-eur:before {\n content: ""; }\n\n.fa-gbp:before {\n content: ""; }\n\n.fa-dollar:before,\n.fa-usd:before {\n content: ""; }\n\n.fa-rupee:before,\n.fa-inr:before {\n content: ""; }\n\n.fa-cny:before,\n.fa-rmb:before,\n.fa-yen:before,\n.fa-jpy:before {\n content: ""; }\n\n.fa-ruble:before,\n.fa-rouble:before,\n.fa-rub:before {\n content: ""; }\n\n.fa-won:before,\n.fa-krw:before {\n content: ""; }\n\n.fa-bitcoin:before,\n.fa-btc:before {\n content: ""; }\n\n.fa-file:before {\n content: ""; }\n\n.fa-file-text:before {\n content: ""; }\n\n.fa-sort-alpha-asc:before {\n content: ""; }\n\n.fa-sort-alpha-desc:before {\n content: ""; }\n\n.fa-sort-amount-asc:before {\n content: ""; }\n\n.fa-sort-amount-desc:before {\n content: ""; }\n\n.fa-sort-numeric-asc:before {\n content: ""; }\n\n.fa-sort-numeric-desc:before {\n content: ""; }\n\n.fa-thumbs-up:before {\n content: ""; }\n\n.fa-thumbs-down:before {\n content: ""; }\n\n.fa-youtube-square:before {\n content: ""; }\n\n.fa-youtube:before {\n content: ""; }\n\n.fa-xing:before {\n content: ""; }\n\n.fa-xing-square:before {\n content: ""; }\n\n.fa-youtube-play:before {\n content: ""; }\n\n.fa-dropbox:before {\n content: ""; }\n\n.fa-stack-overflow:before {\n content: ""; }\n\n.fa-instagram:before {\n content: ""; }\n\n.fa-flickr:before {\n content: ""; }\n\n.fa-adn:before {\n content: ""; }\n\n.fa-bitbucket:before {\n content: ""; }\n\n.fa-bitbucket-square:before {\n content: ""; }\n\n.fa-tumblr:before {\n content: ""; }\n\n.fa-tumblr-square:before {\n content: ""; }\n\n.fa-long-arrow-down:before {\n content: ""; }\n\n.fa-long-arrow-up:before {\n content: ""; }\n\n.fa-long-arrow-left:before {\n content: ""; }\n\n.fa-long-arrow-right:before {\n content: ""; }\n\n.fa-apple:before {\n content: ""; }\n\n.fa-windows:before {\n content: ""; }\n\n.fa-android:before {\n content: ""; }\n\n.fa-linux:before {\n content: ""; }\n\n.fa-dribbble:before {\n content: ""; }\n\n.fa-skype:before {\n content: ""; }\n\n.fa-foursquare:before {\n content: ""; }\n\n.fa-trello:before {\n content: ""; }\n\n.fa-female:before {\n content: ""; }\n\n.fa-male:before {\n content: ""; }\n\n.fa-gittip:before,\n.fa-gratipay:before {\n content: ""; }\n\n.fa-sun-o:before {\n content: ""; }\n\n.fa-moon-o:before {\n content: ""; }\n\n.fa-archive:before {\n content: ""; }\n\n.fa-bug:before {\n content: ""; }\n\n.fa-vk:before {\n content: ""; }\n\n.fa-weibo:before {\n content: ""; }\n\n.fa-renren:before {\n content: ""; }\n\n.fa-pagelines:before {\n content: ""; }\n\n.fa-stack-exchange:before {\n content: ""; }\n\n.fa-arrow-circle-o-right:before {\n content: ""; }\n\n.fa-arrow-circle-o-left:before {\n content: ""; }\n\n.fa-toggle-left:before,\n.fa-caret-square-o-left:before {\n content: ""; }\n\n.fa-dot-circle-o:before {\n content: ""; }\n\n.fa-wheelchair:before {\n content: ""; }\n\n.fa-vimeo-square:before {\n content: ""; }\n\n.fa-turkish-lira:before,\n.fa-try:before {\n content: ""; }\n\n.fa-plus-square-o:before {\n content: ""; }\n\n.fa-space-shuttle:before {\n content: ""; }\n\n.fa-slack:before {\n content: ""; }\n\n.fa-envelope-square:before {\n content: ""; }\n\n.fa-wordpress:before {\n content: ""; }\n\n.fa-openid:before {\n content: ""; }\n\n.fa-institution:before,\n.fa-bank:before,\n.fa-university:before {\n content: ""; }\n\n.fa-mortar-board:before,\n.fa-graduation-cap:before {\n content: ""; }\n\n.fa-yahoo:before {\n content: ""; }\n\n.fa-google:before {\n content: ""; }\n\n.fa-reddit:before {\n content: ""; }\n\n.fa-reddit-square:before {\n content: ""; }\n\n.fa-stumbleupon-circle:before {\n content: ""; }\n\n.fa-stumbleupon:before {\n content: ""; }\n\n.fa-delicious:before {\n content: ""; }\n\n.fa-digg:before {\n content: ""; }\n\n.fa-pied-piper-pp:before {\n content: ""; }\n\n.fa-pied-piper-alt:before {\n content: ""; }\n\n.fa-drupal:before {\n content: ""; }\n\n.fa-joomla:before {\n content: ""; }\n\n.fa-language:before {\n content: ""; }\n\n.fa-fax:before {\n content: ""; }\n\n.fa-building:before {\n content: ""; }\n\n.fa-child:before {\n content: ""; }\n\n.fa-paw:before {\n content: ""; }\n\n.fa-spoon:before {\n content: ""; }\n\n.fa-cube:before {\n content: ""; }\n\n.fa-cubes:before {\n content: ""; }\n\n.fa-behance:before {\n content: ""; }\n\n.fa-behance-square:before {\n content: ""; }\n\n.fa-steam:before {\n content: ""; }\n\n.fa-steam-square:before {\n content: ""; }\n\n.fa-recycle:before {\n content: ""; }\n\n.fa-automobile:before,\n.fa-car:before {\n content: ""; }\n\n.fa-cab:before,\n.fa-taxi:before {\n content: ""; }\n\n.fa-tree:before {\n content: ""; }\n\n.fa-spotify:before {\n content: ""; }\n\n.fa-deviantart:before {\n content: ""; }\n\n.fa-soundcloud:before {\n content: ""; }\n\n.fa-database:before {\n content: ""; }\n\n.fa-file-pdf-o:before {\n content: ""; }\n\n.fa-file-word-o:before {\n content: ""; }\n\n.fa-file-excel-o:before {\n content: ""; }\n\n.fa-file-powerpoint-o:before {\n content: ""; }\n\n.fa-file-photo-o:before,\n.fa-file-picture-o:before,\n.fa-file-image-o:before {\n content: ""; }\n\n.fa-file-zip-o:before,\n.fa-file-archive-o:before {\n content: ""; }\n\n.fa-file-sound-o:before,\n.fa-file-audio-o:before {\n content: ""; }\n\n.fa-file-movie-o:before,\n.fa-file-video-o:before {\n content: ""; }\n\n.fa-file-code-o:before {\n content: ""; }\n\n.fa-vine:before {\n content: ""; }\n\n.fa-codepen:before {\n content: ""; }\n\n.fa-jsfiddle:before {\n content: ""; }\n\n.fa-life-bouy:before,\n.fa-life-buoy:before,\n.fa-life-saver:before,\n.fa-support:before,\n.fa-life-ring:before {\n content: ""; }\n\n.fa-circle-o-notch:before {\n content: ""; }\n\n.fa-ra:before,\n.fa-resistance:before,\n.fa-rebel:before {\n content: ""; }\n\n.fa-ge:before,\n.fa-empire:before {\n content: ""; }\n\n.fa-git-square:before {\n content: ""; }\n\n.fa-git:before {\n content: ""; }\n\n.fa-y-combinator-square:before,\n.fa-yc-square:before,\n.fa-hacker-news:before {\n content: ""; }\n\n.fa-tencent-weibo:before {\n content: ""; }\n\n.fa-qq:before {\n content: ""; }\n\n.fa-wechat:before,\n.fa-weixin:before {\n content: ""; }\n\n.fa-send:before,\n.fa-paper-plane:before {\n content: ""; }\n\n.fa-send-o:before,\n.fa-paper-plane-o:before {\n content: ""; }\n\n.fa-history:before {\n content: ""; }\n\n.fa-circle-thin:before {\n content: ""; }\n\n.fa-header:before {\n content: ""; }\n\n.fa-paragraph:before {\n content: ""; }\n\n.fa-sliders:before {\n content: ""; }\n\n.fa-share-alt:before {\n content: ""; }\n\n.fa-share-alt-square:before {\n content: ""; }\n\n.fa-bomb:before {\n content: ""; }\n\n.fa-soccer-ball-o:before,\n.fa-futbol-o:before {\n content: ""; }\n\n.fa-tty:before {\n content: ""; }\n\n.fa-binoculars:before {\n content: ""; }\n\n.fa-plug:before {\n content: ""; }\n\n.fa-slideshare:before {\n content: ""; }\n\n.fa-twitch:before {\n content: ""; }\n\n.fa-yelp:before {\n content: ""; }\n\n.fa-newspaper-o:before {\n content: ""; }\n\n.fa-wifi:before {\n content: ""; }\n\n.fa-calculator:before {\n content: ""; }\n\n.fa-paypal:before {\n content: ""; }\n\n.fa-google-wallet:before {\n content: ""; }\n\n.fa-cc-visa:before {\n content: ""; }\n\n.fa-cc-mastercard:before {\n content: ""; }\n\n.fa-cc-discover:before {\n content: ""; }\n\n.fa-cc-amex:before {\n content: ""; }\n\n.fa-cc-paypal:before {\n content: ""; }\n\n.fa-cc-stripe:before {\n content: ""; }\n\n.fa-bell-slash:before {\n content: ""; }\n\n.fa-bell-slash-o:before {\n content: ""; }\n\n.fa-trash:before {\n content: ""; }\n\n.fa-copyright:before {\n content: ""; }\n\n.fa-at:before {\n content: ""; }\n\n.fa-eyedropper:before {\n content: ""; }\n\n.fa-paint-brush:before {\n content: ""; }\n\n.fa-birthday-cake:before {\n content: ""; }\n\n.fa-area-chart:before {\n content: ""; }\n\n.fa-pie-chart:before {\n content: ""; }\n\n.fa-line-chart:before {\n content: ""; }\n\n.fa-lastfm:before {\n content: ""; }\n\n.fa-lastfm-square:before {\n content: ""; }\n\n.fa-toggle-off:before {\n content: ""; }\n\n.fa-toggle-on:before {\n content: ""; }\n\n.fa-bicycle:before {\n content: ""; }\n\n.fa-bus:before {\n content: ""; }\n\n.fa-ioxhost:before {\n content: ""; }\n\n.fa-angellist:before {\n content: ""; }\n\n.fa-cc:before {\n content: ""; }\n\n.fa-shekel:before,\n.fa-sheqel:before,\n.fa-ils:before {\n content: ""; }\n\n.fa-meanpath:before {\n content: ""; }\n\n.fa-buysellads:before {\n content: ""; }\n\n.fa-connectdevelop:before {\n content: ""; }\n\n.fa-dashcube:before {\n content: ""; }\n\n.fa-forumbee:before {\n content: ""; }\n\n.fa-leanpub:before {\n content: ""; }\n\n.fa-sellsy:before {\n content: ""; }\n\n.fa-shirtsinbulk:before {\n content: ""; }\n\n.fa-simplybuilt:before {\n content: ""; }\n\n.fa-skyatlas:before {\n content: ""; }\n\n.fa-cart-plus:before {\n content: ""; }\n\n.fa-cart-arrow-down:before {\n content: ""; }\n\n.fa-diamond:before {\n content: ""; }\n\n.fa-ship:before {\n content: ""; }\n\n.fa-user-secret:before {\n content: ""; }\n\n.fa-motorcycle:before {\n content: ""; }\n\n.fa-street-view:before {\n content: ""; }\n\n.fa-heartbeat:before {\n content: ""; }\n\n.fa-venus:before {\n content: ""; }\n\n.fa-mars:before {\n content: ""; }\n\n.fa-mercury:before {\n content: ""; }\n\n.fa-intersex:before,\n.fa-transgender:before {\n content: ""; }\n\n.fa-transgender-alt:before {\n content: ""; }\n\n.fa-venus-double:before {\n content: ""; }\n\n.fa-mars-double:before {\n content: ""; }\n\n.fa-venus-mars:before {\n content: ""; }\n\n.fa-mars-stroke:before {\n content: ""; }\n\n.fa-mars-stroke-v:before {\n content: ""; }\n\n.fa-mars-stroke-h:before {\n content: ""; }\n\n.fa-neuter:before {\n content: ""; }\n\n.fa-genderless:before {\n content: ""; }\n\n.fa-facebook-official:before {\n content: ""; }\n\n.fa-pinterest-p:before {\n content: ""; }\n\n.fa-whatsapp:before {\n content: ""; }\n\n.fa-server:before {\n content: ""; }\n\n.fa-user-plus:before {\n content: ""; }\n\n.fa-user-times:before {\n content: ""; }\n\n.fa-hotel:before,\n.fa-bed:before {\n content: ""; }\n\n.fa-viacoin:before {\n content: ""; }\n\n.fa-train:before {\n content: ""; }\n\n.fa-subway:before {\n content: ""; }\n\n.fa-medium:before {\n content: ""; }\n\n.fa-yc:before,\n.fa-y-combinator:before {\n content: ""; }\n\n.fa-optin-monster:before {\n content: ""; }\n\n.fa-opencart:before {\n content: ""; }\n\n.fa-expeditedssl:before {\n content: ""; }\n\n.fa-battery-4:before,\n.fa-battery:before,\n.fa-battery-full:before {\n content: ""; }\n\n.fa-battery-3:before,\n.fa-battery-three-quarters:before {\n content: ""; }\n\n.fa-battery-2:before,\n.fa-battery-half:before {\n content: ""; }\n\n.fa-battery-1:before,\n.fa-battery-quarter:before {\n content: ""; }\n\n.fa-battery-0:before,\n.fa-battery-empty:before {\n content: ""; }\n\n.fa-mouse-pointer:before {\n content: ""; }\n\n.fa-i-cursor:before {\n content: ""; }\n\n.fa-object-group:before {\n content: ""; }\n\n.fa-object-ungroup:before {\n content: ""; }\n\n.fa-sticky-note:before {\n content: ""; }\n\n.fa-sticky-note-o:before {\n content: ""; }\n\n.fa-cc-jcb:before {\n content: ""; }\n\n.fa-cc-diners-club:before {\n content: ""; }\n\n.fa-clone:before {\n content: ""; }\n\n.fa-balance-scale:before {\n content: ""; }\n\n.fa-hourglass-o:before {\n content: ""; }\n\n.fa-hourglass-1:before,\n.fa-hourglass-start:before {\n content: ""; }\n\n.fa-hourglass-2:before,\n.fa-hourglass-half:before {\n content: ""; }\n\n.fa-hourglass-3:before,\n.fa-hourglass-end:before {\n content: ""; }\n\n.fa-hourglass:before {\n content: ""; }\n\n.fa-hand-grab-o:before,\n.fa-hand-rock-o:before {\n content: ""; }\n\n.fa-hand-stop-o:before,\n.fa-hand-paper-o:before {\n content: ""; }\n\n.fa-hand-scissors-o:before {\n content: ""; }\n\n.fa-hand-lizard-o:before {\n content: ""; }\n\n.fa-hand-spock-o:before {\n content: ""; }\n\n.fa-hand-pointer-o:before {\n content: ""; }\n\n.fa-hand-peace-o:before {\n content: ""; }\n\n.fa-trademark:before {\n content: ""; }\n\n.fa-registered:before {\n content: ""; }\n\n.fa-creative-commons:before {\n content: ""; }\n\n.fa-gg:before {\n content: ""; }\n\n.fa-gg-circle:before {\n content: ""; }\n\n.fa-tripadvisor:before {\n content: ""; }\n\n.fa-odnoklassniki:before {\n content: ""; }\n\n.fa-odnoklassniki-square:before {\n content: ""; }\n\n.fa-get-pocket:before {\n content: ""; }\n\n.fa-wikipedia-w:before {\n content: ""; }\n\n.fa-safari:before {\n content: ""; }\n\n.fa-chrome:before {\n content: ""; }\n\n.fa-firefox:before {\n content: ""; }\n\n.fa-opera:before {\n content: ""; }\n\n.fa-internet-explorer:before {\n content: ""; }\n\n.fa-tv:before,\n.fa-television:before {\n content: ""; }\n\n.fa-contao:before {\n content: ""; }\n\n.fa-500px:before {\n content: ""; }\n\n.fa-amazon:before {\n content: ""; }\n\n.fa-calendar-plus-o:before {\n content: ""; }\n\n.fa-calendar-minus-o:before {\n content: ""; }\n\n.fa-calendar-times-o:before {\n content: ""; }\n\n.fa-calendar-check-o:before {\n content: ""; }\n\n.fa-industry:before {\n content: ""; }\n\n.fa-map-pin:before {\n content: ""; }\n\n.fa-map-signs:before {\n content: ""; }\n\n.fa-map-o:before {\n content: ""; }\n\n.fa-map:before {\n content: ""; }\n\n.fa-commenting:before {\n content: ""; }\n\n.fa-commenting-o:before {\n content: ""; }\n\n.fa-houzz:before {\n content: ""; }\n\n.fa-vimeo:before {\n content: ""; }\n\n.fa-black-tie:before {\n content: ""; }\n\n.fa-fonticons:before {\n content: ""; }\n\n.fa-reddit-alien:before {\n content: ""; }\n\n.fa-edge:before {\n content: ""; }\n\n.fa-credit-card-alt:before {\n content: ""; }\n\n.fa-codiepie:before {\n content: ""; }\n\n.fa-modx:before {\n content: ""; }\n\n.fa-fort-awesome:before {\n content: ""; }\n\n.fa-usb:before {\n content: ""; }\n\n.fa-product-hunt:before {\n content: ""; }\n\n.fa-mixcloud:before {\n content: ""; }\n\n.fa-scribd:before {\n content: ""; }\n\n.fa-pause-circle:before {\n content: ""; }\n\n.fa-pause-circle-o:before {\n content: ""; }\n\n.fa-stop-circle:before {\n content: ""; }\n\n.fa-stop-circle-o:before {\n content: ""; }\n\n.fa-shopping-bag:before {\n content: ""; }\n\n.fa-shopping-basket:before {\n content: ""; }\n\n.fa-hashtag:before {\n content: ""; }\n\n.fa-bluetooth:before {\n content: ""; }\n\n.fa-bluetooth-b:before {\n content: ""; }\n\n.fa-percent:before {\n content: ""; }\n\n.fa-gitlab:before {\n content: ""; }\n\n.fa-wpbeginner:before {\n content: ""; }\n\n.fa-wpforms:before {\n content: ""; }\n\n.fa-envira:before {\n content: ""; }\n\n.fa-universal-access:before {\n content: ""; }\n\n.fa-wheelchair-alt:before {\n content: ""; }\n\n.fa-question-circle-o:before {\n content: ""; }\n\n.fa-blind:before {\n content: ""; }\n\n.fa-audio-description:before {\n content: ""; }\n\n.fa-volume-control-phone:before {\n content: ""; }\n\n.fa-braille:before {\n content: ""; }\n\n.fa-assistive-listening-systems:before {\n content: ""; }\n\n.fa-asl-interpreting:before,\n.fa-american-sign-language-interpreting:before {\n content: ""; }\n\n.fa-deafness:before,\n.fa-hard-of-hearing:before,\n.fa-deaf:before {\n content: ""; }\n\n.fa-glide:before {\n content: ""; }\n\n.fa-glide-g:before {\n content: ""; }\n\n.fa-signing:before,\n.fa-sign-language:before {\n content: ""; }\n\n.fa-low-vision:before {\n content: ""; }\n\n.fa-viadeo:before {\n content: ""; }\n\n.fa-viadeo-square:before {\n content: ""; }\n\n.fa-snapchat:before {\n content: ""; }\n\n.fa-snapchat-ghost:before {\n content: ""; }\n\n.fa-snapchat-square:before {\n content: ""; }\n\n.fa-pied-piper:before {\n content: ""; }\n\n.fa-first-order:before {\n content: ""; }\n\n.fa-yoast:before {\n content: ""; }\n\n.fa-themeisle:before {\n content: ""; }\n\n.fa-google-plus-circle:before,\n.fa-google-plus-official:before {\n content: ""; }\n\n.fa-fa:before,\n.fa-font-awesome:before {\n content: ""; }\n\n.fa-handshake-o:before {\n content: ""; }\n\n.fa-envelope-open:before {\n content: ""; }\n\n.fa-envelope-open-o:before {\n content: ""; }\n\n.fa-linode:before {\n content: ""; }\n\n.fa-address-book:before {\n content: ""; }\n\n.fa-address-book-o:before {\n content: ""; }\n\n.fa-vcard:before,\n.fa-address-card:before {\n content: ""; }\n\n.fa-vcard-o:before,\n.fa-address-card-o:before {\n content: ""; }\n\n.fa-user-circle:before {\n content: ""; }\n\n.fa-user-circle-o:before {\n content: ""; }\n\n.fa-user-o:before {\n content: ""; }\n\n.fa-id-badge:before {\n content: ""; }\n\n.fa-drivers-license:before,\n.fa-id-card:before {\n content: ""; }\n\n.fa-drivers-license-o:before,\n.fa-id-card-o:before {\n content: ""; }\n\n.fa-quora:before {\n content: ""; }\n\n.fa-free-code-camp:before {\n content: ""; }\n\n.fa-telegram:before {\n content: ""; }\n\n.fa-thermometer-4:before,\n.fa-thermometer:before,\n.fa-thermometer-full:before {\n content: ""; }\n\n.fa-thermometer-3:before,\n.fa-thermometer-three-quarters:before {\n content: ""; }\n\n.fa-thermometer-2:before,\n.fa-thermometer-half:before {\n content: ""; }\n\n.fa-thermometer-1:before,\n.fa-thermometer-quarter:before {\n content: ""; }\n\n.fa-thermometer-0:before,\n.fa-thermometer-empty:before {\n content: ""; }\n\n.fa-shower:before {\n content: ""; }\n\n.fa-bathtub:before,\n.fa-s15:before,\n.fa-bath:before {\n content: ""; }\n\n.fa-podcast:before {\n content: ""; }\n\n.fa-window-maximize:before {\n content: ""; }\n\n.fa-window-minimize:before {\n content: ""; }\n\n.fa-window-restore:before {\n content: ""; }\n\n.fa-times-rectangle:before,\n.fa-window-close:before {\n content: ""; }\n\n.fa-times-rectangle-o:before,\n.fa-window-close-o:before {\n content: ""; }\n\n.fa-bandcamp:before {\n content: ""; }\n\n.fa-grav:before {\n content: ""; }\n\n.fa-etsy:before {\n content: ""; }\n\n.fa-imdb:before {\n content: ""; }\n\n.fa-ravelry:before {\n content: ""; }\n\n.fa-eercast:before {\n content: ""; }\n\n.fa-microchip:before {\n content: ""; }\n\n.fa-snowflake-o:before {\n content: ""; }\n\n.fa-superpowers:before {\n content: ""; }\n\n.fa-wpexplorer:before {\n content: ""; }\n\n.fa-meetup:before {\n content: ""; }\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto; }\n'},function(n,o,e){n.exports=e.p+"fonts/fontawesome-webfont.eot"},function(n,o,e){n.exports=e.p+"img/fontawesome-webfont_912ec66d7572ff821749319396470bde.svg"},function(n,o,e){n.exports=e.p+"fonts/fontawesome-webfont.ttf"},function(n,o,e){n.exports=e.p+"fonts/fontawesome-webfont.woff"},function(n,o,e){n.exports=e.p+"fonts/fontawesome-webfont.woff2"}])); \ No newline at end of file +/******/ (function(modules) { // webpackBootstrap +/******/ // install a JSONP callback for chunk loading +/******/ var parentJsonpFunction = window["webpackJsonp"]; +/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) { +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0, resolves = [], result; +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(installedChunks[chunkId]) { +/******/ resolves.push(installedChunks[chunkId][0]); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ for(moduleId in moreModules) { +/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { +/******/ modules[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules); +/******/ while(resolves.length) { +/******/ resolves.shift()(); +/******/ } +/******/ if(executeModules) { +/******/ for(i=0; i < executeModules.length; i++) { +/******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]); +/******/ } +/******/ } +/******/ return result; +/******/ }; +/******/ +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // objects to store loaded and loading chunks +/******/ var installedChunks = { +/******/ 3: 0 +/******/ }; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = function requireEnsure(chunkId) { +/******/ var installedChunkData = installedChunks[chunkId]; +/******/ if(installedChunkData === 0) { +/******/ return new Promise(function(resolve) { resolve(); }); +/******/ } +/******/ +/******/ // a Promise means "currently loading". +/******/ if(installedChunkData) { +/******/ return installedChunkData[2]; +/******/ } +/******/ +/******/ // setup Promise in chunk cache +/******/ var promise = new Promise(function(resolve, reject) { +/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject]; +/******/ }); +/******/ installedChunkData[2] = promise; +/******/ +/******/ // start chunk loading +/******/ var head = document.getElementsByTagName('head')[0]; +/******/ var script = document.createElement('script'); +/******/ script.type = 'text/javascript'; +/******/ script.charset = 'utf-8'; +/******/ script.async = true; +/******/ script.timeout = 120000; +/******/ +/******/ if (__webpack_require__.nc) { +/******/ script.setAttribute("nonce", __webpack_require__.nc); +/******/ } +/******/ script.src = __webpack_require__.p + "" + chunkId + ".chunk.js"; +/******/ var timeout = setTimeout(onScriptComplete, 120000); +/******/ script.onerror = script.onload = onScriptComplete; +/******/ function onScriptComplete() { +/******/ // avoid mem leaks in IE. +/******/ script.onerror = script.onload = null; +/******/ clearTimeout(timeout); +/******/ var chunk = installedChunks[chunkId]; +/******/ if(chunk !== 0) { +/******/ if(chunk) { +/******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.')); +/******/ } +/******/ installedChunks[chunkId] = undefined; +/******/ } +/******/ }; +/******/ head.appendChild(script); +/******/ +/******/ return promise; +/******/ }; +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/"; +/******/ +/******/ // on error function for async loading +/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; }; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 777); +/******/ }) +/************************************************************************/ +/******/ (Array(91).concat([ +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(780);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \n \n\n could become:\n\n \n
\n \n
\n\n Note the use of @polyfill in the comment above a ShadowDOM specific style\n declaration. This is a directive to the styling shim to use the selector\n in comments in lieu of the next selector when running under polyfill.\n*/\nvar ShadowCss = /** @class */ (function () {\n function ShadowCss() {\n this.strictStyling = true;\n }\n /*\n * Shim some cssText with the given selector. Returns cssText that can\n * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css).\n *\n * When strictStyling is true:\n * - selector is the attribute added to all elements inside the host,\n * - hostSelector is the attribute added to the host itself.\n */\n /**\n * @param {?} cssText\n * @param {?} selector\n * @param {?=} hostSelector\n * @return {?}\n */\n ShadowCss.prototype.shimCssText = /**\n * @param {?} cssText\n * @param {?} selector\n * @param {?=} hostSelector\n * @return {?}\n */\n function (cssText, selector, hostSelector) {\n if (hostSelector === void 0) { hostSelector = ''; }\n var /** @type {?} */ commentsWithHash = extractCommentsWithHash(cssText);\n cssText = stripComments(cssText);\n cssText = this._insertDirectives(cssText);\n var /** @type {?} */ scopedCssText = this._scopeCssText(cssText, selector, hostSelector);\n return [scopedCssText].concat(commentsWithHash).join('\\n');\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._insertDirectives = /**\n * @param {?} cssText\n * @return {?}\n */\n function (cssText) {\n cssText = this._insertPolyfillDirectivesInCssText(cssText);\n return this._insertPolyfillRulesInCssText(cssText);\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._insertPolyfillDirectivesInCssText = /**\n * @param {?} cssText\n * @return {?}\n */\n function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentNextSelectorRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return m[2] + '{';\n });\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._insertPolyfillRulesInCssText = /**\n * @param {?} cssText\n * @return {?}\n */\n function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentRuleRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var /** @type {?} */ rule = m[0].replace(m[1], '').replace(m[2], '');\n return m[4] + rule;\n });\n };\n /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._scopeCssText = /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n function (cssText, scopeSelector, hostSelector) {\n var /** @type {?} */ unscopedRules = this._extractUnscopedRulesFromCssText(cssText);\n // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively\n cssText = this._insertPolyfillHostInCssText(cssText);\n cssText = this._convertColonHost(cssText);\n cssText = this._convertColonHostContext(cssText);\n cssText = this._convertShadowDOMSelectors(cssText);\n if (scopeSelector) {\n cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\n }\n cssText = cssText + '\\n' + unscopedRules;\n return cssText.trim();\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._extractUnscopedRulesFromCssText = /**\n * @param {?} cssText\n * @return {?}\n */\n function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n var /** @type {?} */ r = '';\n var /** @type {?} */ m;\n _cssContentUnscopedRuleRe.lastIndex = 0;\n while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) {\n var /** @type {?} */ rule = m[0].replace(m[2], '').replace(m[1], m[4]);\n r += rule + '\\n\\n';\n }\n return r;\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._convertColonHost = /**\n * @param {?} cssText\n * @return {?}\n */\n function (cssText) {\n return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._convertColonHostContext = /**\n * @param {?} cssText\n * @return {?}\n */\n function (cssText) {\n return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);\n };\n /**\n * @param {?} cssText\n * @param {?} regExp\n * @param {?} partReplacer\n * @return {?}\n */\n ShadowCss.prototype._convertColonRule = /**\n * @param {?} cssText\n * @param {?} regExp\n * @param {?} partReplacer\n * @return {?}\n */\n function (cssText, regExp, partReplacer) {\n // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule\n return cssText.replace(regExp, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n if (m[2]) {\n var /** @type {?} */ parts = m[2].split(',');\n var /** @type {?} */ r = [];\n for (var /** @type {?} */ i = 0; i < parts.length; i++) {\n var /** @type {?} */ p = parts[i].trim();\n if (!p)\n break;\n r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\n }\n return r.join(',');\n }\n else {\n return _polyfillHostNoCombinator + m[3];\n }\n });\n };\n /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n ShadowCss.prototype._colonHostContextPartReplacer = /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n function (host, part, suffix) {\n if (part.indexOf(_polyfillHost) > -1) {\n return this._colonHostPartReplacer(host, part, suffix);\n }\n else {\n return host + part + suffix + ', ' + part + ' ' + host + suffix;\n }\n };\n /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n ShadowCss.prototype._colonHostPartReplacer = /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n function (host, part, suffix) {\n return host + part.replace(_polyfillHost, '') + suffix;\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._convertShadowDOMSelectors = /**\n * @param {?} cssText\n * @return {?}\n */\n function (cssText) {\n return _shadowDOMSelectorsRe.reduce(function (result, pattern) { return result.replace(pattern, ' '); }, cssText);\n };\n /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._scopeSelectors = /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n function (cssText, scopeSelector, hostSelector) {\n var _this = this;\n return processRules(cssText, function (rule) {\n var /** @type {?} */ selector = rule.selector;\n var /** @type {?} */ content = rule.content;\n if (rule.selector[0] != '@') {\n selector =\n _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);\n }\n else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') ||\n rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) {\n content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);\n }\n return new CssRule(selector, content);\n });\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @param {?} strict\n * @return {?}\n */\n ShadowCss.prototype._scopeSelector = /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @param {?} strict\n * @return {?}\n */\n function (selector, scopeSelector, hostSelector, strict) {\n var _this = this;\n return selector.split(',')\n .map(function (part) { return part.trim().split(_shadowDeepSelectors); })\n .map(function (deepParts) {\n var shallowPart = deepParts[0], otherParts = deepParts.slice(1);\n var /** @type {?} */ applyScope = function (shallowPart) {\n if (_this._selectorNeedsScoping(shallowPart, scopeSelector)) {\n return strict ?\n _this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) :\n _this._applySelectorScope(shallowPart, scopeSelector, hostSelector);\n }\n else {\n return shallowPart;\n }\n };\n return [applyScope(shallowPart)].concat(otherParts).join(' ');\n })\n .join(', ');\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @return {?}\n */\n ShadowCss.prototype._selectorNeedsScoping = /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @return {?}\n */\n function (selector, scopeSelector) {\n var /** @type {?} */ re = this._makeScopeMatcher(scopeSelector);\n return !re.test(selector);\n };\n /**\n * @param {?} scopeSelector\n * @return {?}\n */\n ShadowCss.prototype._makeScopeMatcher = /**\n * @param {?} scopeSelector\n * @return {?}\n */\n function (scopeSelector) {\n var /** @type {?} */ lre = /\\[/g;\n var /** @type {?} */ rre = /\\]/g;\n scopeSelector = scopeSelector.replace(lre, '\\\\[').replace(rre, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._applySelectorScope = /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n function (selector, scopeSelector, hostSelector) {\n // Difference from webcomponents.js: scopeSelector could not be an array\n return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._applySimpleSelectorScope = /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n function (selector, scopeSelector, hostSelector) {\n // In Android browser, the lastIndex is not reset when the regex is used in String.replace()\n _polyfillHostRe.lastIndex = 0;\n if (_polyfillHostRe.test(selector)) {\n var /** @type {?} */ replaceBy_1 = this.strictStyling ? \"[\" + hostSelector + \"]\" : scopeSelector;\n return selector\n .replace(_polyfillHostNoCombinatorRe, function (hnc, selector) {\n return selector.replace(/([^:]*)(:*)(.*)/, function (_, before, colon, after) {\n return before + replaceBy_1 + colon + after;\n });\n })\n .replace(_polyfillHostRe, replaceBy_1 + ' ');\n }\n return scopeSelector + ' ' + selector;\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._applyStrictSelectorScope = /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n function (selector, scopeSelector, hostSelector) {\n var _this = this;\n var /** @type {?} */ isRe = /\\[is=([^\\]]*)\\]/g;\n scopeSelector = scopeSelector.replace(isRe, function (_) {\n var parts = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n parts[_i - 1] = arguments[_i];\n }\n return parts[0];\n });\n var /** @type {?} */ attrName = '[' + scopeSelector + ']';\n var /** @type {?} */ _scopeSelectorPart = function (p) {\n var /** @type {?} */ scopedP = p.trim();\n if (!scopedP) {\n return '';\n }\n if (p.indexOf(_polyfillHostNoCombinator) > -1) {\n scopedP = _this._applySimpleSelectorScope(p, scopeSelector, hostSelector);\n }\n else {\n // remove :host since it should be unnecessary\n var /** @type {?} */ t = p.replace(_polyfillHostRe, '');\n if (t.length > 0) {\n var /** @type {?} */ matches = t.match(/([^:]*)(:*)(.*)/);\n if (matches) {\n scopedP = matches[1] + attrName + matches[2] + matches[3];\n }\n }\n }\n return scopedP;\n };\n var /** @type {?} */ safeContent = new SafeSelector(selector);\n selector = safeContent.content();\n var /** @type {?} */ scopedSelector = '';\n var /** @type {?} */ startIndex = 0;\n var /** @type {?} */ res;\n var /** @type {?} */ sep = /( |>|\\+|~(?!=))\\s*/g;\n // If a selector appears before :host it should not be shimmed as it\n // matches on ancestor elements and not on elements in the host's shadow\n // `:host-context(div)` is transformed to\n // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator`\n // the `div` is not part of the component in the 2nd selectors and should not be scoped.\n // Historically `component-tag:host` was matching the component so we also want to preserve\n // this behavior to avoid breaking legacy apps (it should not match).\n // The behavior should be:\n // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything)\n // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a\n // `:host-context(tag)`)\n var /** @type {?} */ hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1;\n // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present\n var /** @type {?} */ shouldScope = !hasHost;\n while ((res = sep.exec(selector)) !== null) {\n var /** @type {?} */ separator = res[1];\n var /** @type {?} */ part_1 = selector.slice(startIndex, res.index).trim();\n shouldScope = shouldScope || part_1.indexOf(_polyfillHostNoCombinator) > -1;\n var /** @type {?} */ scopedPart = shouldScope ? _scopeSelectorPart(part_1) : part_1;\n scopedSelector += scopedPart + \" \" + separator + \" \";\n startIndex = sep.lastIndex;\n }\n var /** @type {?} */ part = selector.substring(startIndex);\n shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1;\n scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;\n // replace the placeholders with their original values\n return safeContent.restore(scopedSelector);\n };\n /**\n * @param {?} selector\n * @return {?}\n */\n ShadowCss.prototype._insertPolyfillHostInCssText = /**\n * @param {?} selector\n * @return {?}\n */\n function (selector) {\n return selector.replace(_colonHostContextRe, _polyfillHostContext)\n .replace(_colonHostRe, _polyfillHost);\n };\n return ShadowCss;\n}());\nvar SafeSelector = /** @class */ (function () {\n function SafeSelector(selector) {\n var _this = this;\n this.placeholders = [];\n this.index = 0;\n // Replaces attribute selectors with placeholders.\n // The WS in [attr=\"va lue\"] would otherwise be interpreted as a selector separator.\n selector = selector.replace(/(\\[[^\\]]*\\])/g, function (_, keep) {\n var /** @type {?} */ replaceBy = \"__ph-\" + _this.index + \"__\";\n _this.placeholders.push(keep);\n _this.index++;\n return replaceBy;\n });\n // Replaces the expression in `:nth-child(2n + 1)` with a placeholder.\n // WS and \"+\" would otherwise be interpreted as selector separators.\n this._content = selector.replace(/(:nth-[-\\w]+)(\\([^)]+\\))/g, function (_, pseudo, exp) {\n var /** @type {?} */ replaceBy = \"__ph-\" + _this.index + \"__\";\n _this.placeholders.push(exp);\n _this.index++;\n return pseudo + replaceBy;\n });\n }\n /**\n * @param {?} content\n * @return {?}\n */\n SafeSelector.prototype.restore = /**\n * @param {?} content\n * @return {?}\n */\n function (content) {\n var _this = this;\n return content.replace(/__ph-(\\d+)__/g, function (ph, index) { return _this.placeholders[+index]; });\n };\n /**\n * @return {?}\n */\n SafeSelector.prototype.content = /**\n * @return {?}\n */\n function () { return this._content; };\n return SafeSelector;\n}());\nvar _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?(['\"])(.*?)\\1[;\\s]*}([^{]*?){/gim;\nvar _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _polyfillHost = '-shadowcsshost';\n// note: :host-context pre-processed to -shadowcsshostcontext.\nvar _polyfillHostContext = '-shadowcsscontext';\nvar _parenSuffix = ')(?:\\\\((' +\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\n ')\\\\))?([^,{]*)';\nvar _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim');\nvar _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim');\nvar _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\nvar _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s]*)/;\nvar _shadowDOMSelectorsRe = [\n /::shadow/g,\n /::content/g,\n /\\/shadow-deep\\//g,\n /\\/shadow\\//g,\n];\n// The deep combinator is deprecated in the CSS spec\n// Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future.\n// see https://github.com/angular/angular/pull/17677\nvar _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)|(?:::ng-deep)/g;\nvar _selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$';\nvar _polyfillHostRe = /-shadowcsshost/gim;\nvar _colonHostRe = /:host/gim;\nvar _colonHostContextRe = /:host-context/gim;\nvar _commentRe = /\\/\\*\\s*[\\s\\S]*?\\*\\//g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction stripComments(input) {\n return input.replace(_commentRe, '');\n}\nvar _commentWithHashRe = /\\/\\*\\s*#\\s*source(Mapping)?URL=[\\s\\S]+?\\*\\//g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction extractCommentsWithHash(input) {\n return input.match(_commentWithHashRe) || [];\n}\nvar _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\nvar _curlyRe = /([{}])/g;\nvar OPEN_CURLY = '{';\nvar CLOSE_CURLY = '}';\nvar BLOCK_PLACEHOLDER = '%BLOCK%';\nvar CssRule = /** @class */ (function () {\n function CssRule(selector, content) {\n this.selector = selector;\n this.content = content;\n }\n return CssRule;\n}());\n/**\n * @param {?} input\n * @param {?} ruleCallback\n * @return {?}\n */\nfunction processRules(input, ruleCallback) {\n var /** @type {?} */ inputWithEscapedBlocks = escapeBlocks(input);\n var /** @type {?} */ nextBlockIndex = 0;\n return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var /** @type {?} */ selector = m[2];\n var /** @type {?} */ content = '';\n var /** @type {?} */ suffix = m[4];\n var /** @type {?} */ contentPrefix = '';\n if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) {\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n contentPrefix = '{';\n }\n var /** @type {?} */ rule = ruleCallback(new CssRule(selector, content));\n return \"\" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;\n });\n}\nvar StringWithEscapedBlocks = /** @class */ (function () {\n function StringWithEscapedBlocks(escapedString, blocks) {\n this.escapedString = escapedString;\n this.blocks = blocks;\n }\n return StringWithEscapedBlocks;\n}());\n/**\n * @param {?} input\n * @return {?}\n */\nfunction escapeBlocks(input) {\n var /** @type {?} */ inputParts = input.split(_curlyRe);\n var /** @type {?} */ resultParts = [];\n var /** @type {?} */ escapedBlocks = [];\n var /** @type {?} */ bracketCount = 0;\n var /** @type {?} */ currentBlockParts = [];\n for (var /** @type {?} */ partIndex = 0; partIndex < inputParts.length; partIndex++) {\n var /** @type {?} */ part = inputParts[partIndex];\n if (part == CLOSE_CURLY) {\n bracketCount--;\n }\n if (bracketCount > 0) {\n currentBlockParts.push(part);\n }\n else {\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n currentBlockParts = [];\n }\n resultParts.push(part);\n }\n if (part == OPEN_CURLY) {\n bracketCount++;\n }\n }\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n }\n return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar COMPONENT_VARIABLE = '%COMP%';\nvar HOST_ATTR = \"_nghost-\" + COMPONENT_VARIABLE;\nvar CONTENT_ATTR = \"_ngcontent-\" + COMPONENT_VARIABLE;\nvar StylesCompileDependency = /** @class */ (function () {\n function StylesCompileDependency(name, moduleUrl, setValue) {\n this.name = name;\n this.moduleUrl = moduleUrl;\n this.setValue = setValue;\n }\n return StylesCompileDependency;\n}());\nvar CompiledStylesheet = /** @class */ (function () {\n function CompiledStylesheet(outputCtx, stylesVar, dependencies, isShimmed, meta) {\n this.outputCtx = outputCtx;\n this.stylesVar = stylesVar;\n this.dependencies = dependencies;\n this.isShimmed = isShimmed;\n this.meta = meta;\n }\n return CompiledStylesheet;\n}());\nvar StyleCompiler = /** @class */ (function () {\n function StyleCompiler(_urlResolver) {\n this._urlResolver = _urlResolver;\n this._shadowCss = new ShadowCss();\n }\n /**\n * @param {?} outputCtx\n * @param {?} comp\n * @return {?}\n */\n StyleCompiler.prototype.compileComponent = /**\n * @param {?} outputCtx\n * @param {?} comp\n * @return {?}\n */\n function (outputCtx, comp) {\n var /** @type {?} */ template = /** @type {?} */ ((comp.template));\n return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({\n styles: template.styles,\n styleUrls: template.styleUrls,\n moduleUrl: identifierModuleUrl(comp.type)\n }), this.needsStyleShim(comp), true);\n };\n /**\n * @param {?} outputCtx\n * @param {?} comp\n * @param {?} stylesheet\n * @param {?=} shim\n * @return {?}\n */\n StyleCompiler.prototype.compileStyles = /**\n * @param {?} outputCtx\n * @param {?} comp\n * @param {?} stylesheet\n * @param {?=} shim\n * @return {?}\n */\n function (outputCtx, comp, stylesheet, shim) {\n if (shim === void 0) { shim = this.needsStyleShim(comp); }\n return this._compileStyles(outputCtx, comp, stylesheet, shim, false);\n };\n /**\n * @param {?} comp\n * @return {?}\n */\n StyleCompiler.prototype.needsStyleShim = /**\n * @param {?} comp\n * @return {?}\n */\n function (comp) {\n return /** @type {?} */ ((comp.template)).encapsulation === ViewEncapsulation.Emulated;\n };\n /**\n * @param {?} outputCtx\n * @param {?} comp\n * @param {?} stylesheet\n * @param {?} shim\n * @param {?} isComponentStylesheet\n * @return {?}\n */\n StyleCompiler.prototype._compileStyles = /**\n * @param {?} outputCtx\n * @param {?} comp\n * @param {?} stylesheet\n * @param {?} shim\n * @param {?} isComponentStylesheet\n * @return {?}\n */\n function (outputCtx, comp, stylesheet, shim, isComponentStylesheet) {\n var _this = this;\n var /** @type {?} */ styleExpressions = stylesheet.styles.map(function (plainStyle) { return literal(_this._shimIfNeeded(plainStyle, shim)); });\n var /** @type {?} */ dependencies = [];\n stylesheet.styleUrls.forEach(function (styleUrl) {\n var /** @type {?} */ exprIndex = styleExpressions.length;\n // Note: This placeholder will be filled later.\n styleExpressions.push(/** @type {?} */ ((null)));\n dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, function (value) { return styleExpressions[exprIndex] = outputCtx.importExpr(value); }));\n });\n // styles variable contains plain strings and arrays of other styles arrays (recursive),\n // so we set its type to dynamic.\n var /** @type {?} */ stylesVar = getStylesVarName(isComponentStylesheet ? comp : null);\n var /** @type {?} */ stmt = variable(stylesVar)\n .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const])))\n .toDeclStmt(null, isComponentStylesheet ? [StmtModifier.Final] : [\n StmtModifier.Final, StmtModifier.Exported\n ]);\n outputCtx.statements.push(stmt);\n return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet);\n };\n /**\n * @param {?} style\n * @param {?} shim\n * @return {?}\n */\n StyleCompiler.prototype._shimIfNeeded = /**\n * @param {?} style\n * @param {?} shim\n * @return {?}\n */\n function (style, shim) {\n return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style;\n };\n return StyleCompiler;\n}());\n/**\n * @param {?} component\n * @return {?}\n */\nfunction getStylesVarName(component) {\n var /** @type {?} */ result = \"styles\";\n if (component) {\n result += \"_\" + identifierName(component.type);\n }\n return result;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces';\nvar SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']);\n// Equivalent to \\s with \\u00a0 (non-breaking space) excluded.\n// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\nvar WS_CHARS = ' \\f\\n\\r\\t\\v\\u1680\\u180e\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar NO_WS_REGEXP = new RegExp(\"[^\" + WS_CHARS + \"]\");\nvar WS_REPLACE_REGEXP = new RegExp(\"[\" + WS_CHARS + \"]{2,}\", 'g');\n/**\n * @param {?} attrs\n * @return {?}\n */\nfunction hasPreserveWhitespacesAttr(attrs) {\n return attrs.some(function (attr) { return attr.name === PRESERVE_WS_ATTR_NAME; });\n}\n/**\n * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see:\n * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32\n * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character\n * and later on replaced by a space. We are re-implementing the same idea here.\n * @param {?} value\n * @return {?}\n */\nfunction replaceNgsp(value) {\n // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE\n return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' ');\n}\n/**\n * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules:\n * - consider spaces, tabs and new lines as whitespace characters;\n * - drop text nodes consisting of whitespace characters only;\n * - for all other text nodes replace consecutive whitespace characters with one space;\n * - convert &ngsp; pseudo-entity to a single space;\n *\n * Removal and trimming of whitespaces have positive performance impact (less code to generate\n * while compiling templates, faster view creation). At the same time it can be \"destructive\"\n * in some cases (whitespaces can influence layout). Because of the potential of breaking layout\n * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for\n * whitespace removal. The default option for whitespace removal will be revisited in Angular 6\n * and might be changed to \"on\" by default.\n */\nvar WhitespaceVisitor = /** @class */ (function () {\n function WhitespaceVisitor() {\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitElement = /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n function (element, context) {\n if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) {\n // don't descent into elements where we need to preserve whitespaces\n // but still visit all attributes to eliminate one used as a market to preserve WS\n return new Element(element.name, visitAll(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\n return new Element(element.name, element.attrs, visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitAttribute = /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n function (attribute, context) {\n return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null;\n };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitText = /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n function (text, context) {\n var /** @type {?} */ isNotBlank = text.value.match(NO_WS_REGEXP);\n if (isNotBlank) {\n return new Text(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan);\n }\n return null;\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitComment = /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n function (comment, context) { return comment; };\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitExpansion = /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n function (expansion, context) { return expansion; };\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitExpansionCase = /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n function (expansionCase, context) { return expansionCase; };\n return WhitespaceVisitor;\n}());\n/**\n * @param {?} htmlAstWithErrors\n * @return {?}\n */\nfunction removeWhitespaces(htmlAstWithErrors) {\n return new ParseTreeResult(visitAll(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// http://cldr.unicode.org/index/cldr-spec/plural-rules\nvar PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other'];\n/**\n * Expands special forms into elements.\n *\n * For example,\n *\n * ```\n * { messages.length, plural,\n * =0 {zero}\n * =1 {one}\n * other {more than one}\n * }\n * ```\n *\n * will be expanded into\n *\n * ```\n * \n * zero\n * one\n * more than one\n * \n * ```\n * @param {?} nodes\n * @return {?}\n */\nfunction expandNodes(nodes) {\n var /** @type {?} */ expander = new _Expander();\n return new ExpansionResult(visitAll(expander, nodes), expander.isExpanded, expander.errors);\n}\nvar ExpansionResult = /** @class */ (function () {\n function ExpansionResult(nodes, expanded, errors) {\n this.nodes = nodes;\n this.expanded = expanded;\n this.errors = errors;\n }\n return ExpansionResult;\n}());\nvar ExpansionError = /** @class */ (function (_super) {\n Object(__WEBPACK_IMPORTED_MODULE_0_tslib__[\"b\" /* __extends */])(ExpansionError, _super);\n function ExpansionError(span, errorMsg) {\n return _super.call(this, span, errorMsg) || this;\n }\n return ExpansionError;\n}(ParseError));\n/**\n * Expand expansion forms (plural, select) to directives\n *\n * \\@internal\n */\nvar _Expander = /** @class */ (function () {\n function _Expander() {\n this.isExpanded = false;\n this.errors = [];\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitElement = /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n function (element, context) {\n return new Element(element.name, element.attrs, visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitAttribute = /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n function (attribute, context) { return attribute; };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitText = /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n function (text, context) { return text; };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitComment = /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n function (comment, context) { return comment; };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitExpansion = /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n function (icu, context) {\n this.isExpanded = true;\n return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) :\n _expandDefaultForm(icu, this.errors);\n };\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitExpansionCase = /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n function (icuCase, context) {\n throw new Error('Should not be reached');\n };\n return _Expander;\n}());\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandPluralForm(ast, errors) {\n var /** @type {?} */ children = ast.cases.map(function (c) {\n if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\\d+$/)) {\n errors.push(new ExpansionError(c.valueSourceSpan, \"Plural cases should be \\\"=\\\" or one of \" + PLURAL_CASES.join(\", \")));\n }\n var /** @type {?} */ expansionResult = expandNodes(c.expression);\n errors.push.apply(errors, expansionResult.errors);\n return new Element(\"ng-template\", [new Attribute$1('ngPluralCase', \"\" + c.value, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n });\n var /** @type {?} */ switchAttr = new Attribute$1('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan);\n return new Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\n}\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandDefaultForm(ast, errors) {\n var /** @type {?} */ children = ast.cases.map(function (c) {\n var /** @type {?} */ expansionResult = expandNodes(c.expression);\n errors.push.apply(errors, expansionResult.errors);\n if (c.value === 'other') {\n // other is the default case when no values match\n return new Element(\"ng-template\", [new Attribute$1('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n }\n return new Element(\"ng-template\", [new Attribute$1('ngSwitchCase', \"\" + c.value, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n });\n var /** @type {?} */ switchAttr = new Attribute$1('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan);\n return new Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar PROPERTY_PARTS_SEPARATOR = '.';\nvar ATTRIBUTE_PREFIX = 'attr';\nvar CLASS_PREFIX = 'class';\nvar STYLE_PREFIX = 'style';\nvar ANIMATE_PROP_PREFIX = 'animate-';\n/** @enum {number} */\nvar BoundPropertyType = {\n DEFAULT: 0,\n LITERAL_ATTR: 1,\n ANIMATION: 2,\n};\nBoundPropertyType[BoundPropertyType.DEFAULT] = \"DEFAULT\";\nBoundPropertyType[BoundPropertyType.LITERAL_ATTR] = \"LITERAL_ATTR\";\nBoundPropertyType[BoundPropertyType.ANIMATION] = \"ANIMATION\";\n/**\n * Represents a parsed property.\n */\nvar BoundProperty = /** @class */ (function () {\n function BoundProperty(name, expression, type, sourceSpan) {\n this.name = name;\n this.expression = expression;\n this.type = type;\n this.sourceSpan = sourceSpan;\n this.isLiteral = this.type === BoundPropertyType.LITERAL_ATTR;\n this.isAnimation = this.type === BoundPropertyType.ANIMATION;\n }\n return BoundProperty;\n}());\n/**\n * Parses bindings in templates and in the directive host area.\n */\nvar BindingParser = /** @class */ (function () {\n function BindingParser(_exprParser, _interpolationConfig, _schemaRegistry, pipes, _targetErrors) {\n var _this = this;\n this._exprParser = _exprParser;\n this._interpolationConfig = _interpolationConfig;\n this._schemaRegistry = _schemaRegistry;\n this._targetErrors = _targetErrors;\n this.pipesByName = new Map();\n this._usedPipes = new Map();\n pipes.forEach(function (pipe) { return _this.pipesByName.set(pipe.name, pipe); });\n }\n /**\n * @return {?}\n */\n BindingParser.prototype.getUsedPipes = /**\n * @return {?}\n */\n function () { return Array.from(this._usedPipes.values()); };\n /**\n * @param {?} dirMeta\n * @param {?} elementSelector\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype.createDirectiveHostPropertyAsts = /**\n * @param {?} dirMeta\n * @param {?} elementSelector\n * @param {?} sourceSpan\n * @return {?}\n */\n function (dirMeta, elementSelector, sourceSpan) {\n var _this = this;\n if (dirMeta.hostProperties) {\n var /** @type {?} */ boundProps_1 = [];\n Object.keys(dirMeta.hostProperties).forEach(function (propName) {\n var /** @type {?} */ expression = dirMeta.hostProperties[propName];\n if (typeof expression === 'string') {\n _this.parsePropertyBinding(propName, expression, true, sourceSpan, [], boundProps_1);\n }\n else {\n _this._reportError(\"Value of the host property binding \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n }\n });\n return boundProps_1.map(function (prop) { return _this.createElementPropertyAst(elementSelector, prop); });\n }\n return null;\n };\n /**\n * @param {?} dirMeta\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype.createDirectiveHostEventAsts = /**\n * @param {?} dirMeta\n * @param {?} sourceSpan\n * @return {?}\n */\n function (dirMeta, sourceSpan) {\n var _this = this;\n if (dirMeta.hostListeners) {\n var /** @type {?} */ targetEventAsts_1 = [];\n Object.keys(dirMeta.hostListeners).forEach(function (propName) {\n var /** @type {?} */ expression = dirMeta.hostListeners[propName];\n if (typeof expression === 'string') {\n _this.parseEvent(propName, expression, sourceSpan, [], targetEventAsts_1);\n }\n else {\n _this._reportError(\"Value of the host listener \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n }\n });\n return targetEventAsts_1;\n }\n return null;\n };\n /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype.parseInterpolation = /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n function (value, sourceSpan) {\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ ast = /** @type {?} */ ((this._exprParser.parseInterpolation(value, sourceInfo, this._interpolationConfig)));\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (/** @type {?} */ e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @param {?} targetVars\n * @return {?}\n */\n BindingParser.prototype.parseInlineTemplateBinding = /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @param {?} targetVars\n * @return {?}\n */\n function (prefixToken, value, sourceSpan, targetMatchableAttrs, targetProps, targetVars) {\n var /** @type {?} */ bindings = this._parseTemplateBindings(prefixToken, value, sourceSpan);\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n var /** @type {?} */ binding = bindings[i];\n if (binding.keyIsVar) {\n targetVars.push(new VariableAst(binding.key, binding.name, sourceSpan));\n }\n else if (binding.expression) {\n this._parsePropertyAst(binding.key, binding.expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetMatchableAttrs.push([binding.key, '']);\n this.parseLiteralAttr(binding.key, null, sourceSpan, targetMatchableAttrs, targetProps);\n }\n }\n };\n /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._parseTemplateBindings = /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n function (prefixToken, value, sourceSpan) {\n var _this = this;\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ bindingsResult = this._exprParser.parseTemplateBindings(prefixToken, value, sourceInfo);\n this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan);\n bindingsResult.templateBindings.forEach(function (binding) {\n if (binding.expression) {\n _this._checkPipes(binding.expression, sourceSpan);\n }\n });\n bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); });\n return bindingsResult.templateBindings;\n }\n catch (/** @type {?} */ e) {\n this._reportError(\"\" + e, sourceSpan);\n return [];\n }\n };\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype.parseLiteralAttr = /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n if (_isAnimationLabel(name)) {\n name = name.substring(1);\n if (value) {\n this._reportError(\"Assigning animation triggers via @prop=\\\"exp\\\" attributes with an expression is invalid.\" +\n \" Use property bindings (e.g. [@prop]=\\\"exp\\\") or use an attribute without a value (e.g. @prop) instead.\", sourceSpan, ParseErrorLevel.ERROR);\n }\n this._parseAnimation(name, value, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetProps.push(new BoundProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), BoundPropertyType.LITERAL_ATTR, sourceSpan));\n }\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} isHost\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype.parsePropertyBinding = /**\n * @param {?} name\n * @param {?} expression\n * @param {?} isHost\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n function (name, expression, isHost, sourceSpan, targetMatchableAttrs, targetProps) {\n var /** @type {?} */ isAnimationProp = false;\n if (name.startsWith(ANIMATE_PROP_PREFIX)) {\n isAnimationProp = true;\n name = name.substring(ANIMATE_PROP_PREFIX.length);\n }\n else if (_isAnimationLabel(name)) {\n isAnimationProp = true;\n name = name.substring(1);\n }\n if (isAnimationProp) {\n this._parseAnimation(name, expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n this._parsePropertyAst(name, this._parseBinding(expression, isHost, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);\n }\n };\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype.parsePropertyInterpolation = /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n var /** @type {?} */ expr = this.parseInterpolation(value, sourceSpan);\n if (expr) {\n this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);\n return true;\n }\n return false;\n };\n /**\n * @param {?} name\n * @param {?} ast\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype._parsePropertyAst = /**\n * @param {?} name\n * @param {?} ast\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) {\n targetMatchableAttrs.push([name, /** @type {?} */ ((ast.source))]);\n targetProps.push(new BoundProperty(name, ast, BoundPropertyType.DEFAULT, sourceSpan));\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype._parseAnimation = /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) {\n // This will occur when a @trigger is not paired with an expression.\n // For animations it is valid to not have an expression since */void\n // states will be applied by angular when the element is attached/detached\n var /** @type {?} */ ast = this._parseBinding(expression || 'undefined', false, sourceSpan);\n targetMatchableAttrs.push([name, /** @type {?} */ ((ast.source))]);\n targetProps.push(new BoundProperty(name, ast, BoundPropertyType.ANIMATION, sourceSpan));\n };\n /**\n * @param {?} value\n * @param {?} isHostBinding\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._parseBinding = /**\n * @param {?} value\n * @param {?} isHostBinding\n * @param {?} sourceSpan\n * @return {?}\n */\n function (value, isHostBinding, sourceSpan) {\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ ast = isHostBinding ?\n this._exprParser.parseSimpleBinding(value, sourceInfo, this._interpolationConfig) :\n this._exprParser.parseBinding(value, sourceInfo, this._interpolationConfig);\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (/** @type {?} */ e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n /**\n * @param {?} elementSelector\n * @param {?} boundProp\n * @return {?}\n */\n BindingParser.prototype.createElementPropertyAst = /**\n * @param {?} elementSelector\n * @param {?} boundProp\n * @return {?}\n */\n function (elementSelector, boundProp) {\n if (boundProp.isAnimation) {\n return new BoundElementPropertyAst(boundProp.name, PropertyBindingType.Animation, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan);\n }\n var /** @type {?} */ unit = null;\n var /** @type {?} */ bindingType = /** @type {?} */ ((undefined));\n var /** @type {?} */ boundPropertyName = null;\n var /** @type {?} */ parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR);\n var /** @type {?} */ securityContexts = /** @type {?} */ ((undefined));\n // Check check for special cases (prefix style, attr, class)\n if (parts.length > 1) {\n if (parts[0] == ATTRIBUTE_PREFIX) {\n boundPropertyName = parts[1];\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true);\n var /** @type {?} */ nsSeparatorIdx = boundPropertyName.indexOf(':');\n if (nsSeparatorIdx > -1) {\n var /** @type {?} */ ns = boundPropertyName.substring(0, nsSeparatorIdx);\n var /** @type {?} */ name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);\n boundPropertyName = mergeNsAndName(ns, name_1);\n }\n bindingType = PropertyBindingType.Attribute;\n }\n else if (parts[0] == CLASS_PREFIX) {\n boundPropertyName = parts[1];\n bindingType = PropertyBindingType.Class;\n securityContexts = [SecurityContext.NONE];\n }\n else if (parts[0] == STYLE_PREFIX) {\n unit = parts.length > 2 ? parts[2] : null;\n boundPropertyName = parts[1];\n bindingType = PropertyBindingType.Style;\n securityContexts = [SecurityContext.STYLE];\n }\n }\n // If not a special case, use the full property name\n if (boundPropertyName === null) {\n boundPropertyName = this._schemaRegistry.getMappedPropName(boundProp.name);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, false);\n bindingType = PropertyBindingType.Property;\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, false);\n }\n return new BoundElementPropertyAst(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan);\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n BindingParser.prototype.parseEvent = /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n if (_isAnimationLabel(name)) {\n name = name.substr(1);\n this._parseAnimationEvent(name, expression, sourceSpan, targetEvents);\n }\n else {\n this._parseEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents);\n }\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetEvents\n * @return {?}\n */\n BindingParser.prototype._parseAnimationEvent = /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetEvents\n * @return {?}\n */\n function (name, expression, sourceSpan, targetEvents) {\n var /** @type {?} */ matches = splitAtPeriod(name, [name, '']);\n var /** @type {?} */ eventName = matches[0];\n var /** @type {?} */ phase = matches[1].toLowerCase();\n if (phase) {\n switch (phase) {\n case 'start':\n case 'done':\n var /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n targetEvents.push(new BoundEventAst(eventName, null, phase, ast, sourceSpan));\n break;\n default:\n this._reportError(\"The provided animation output phase value \\\"\" + phase + \"\\\" for \\\"@\" + eventName + \"\\\" is not supported (use start or done)\", sourceSpan);\n break;\n }\n }\n else {\n this._reportError(\"The animation trigger output event (@\" + eventName + \") is missing its phase value name (start or done are currently supported)\", sourceSpan);\n }\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n BindingParser.prototype._parseEvent = /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n // long format: 'target: eventName'\n var _a = splitAtColon(name, [/** @type {?} */ ((null)), name]), target = _a[0], eventName = _a[1];\n var /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n targetMatchableAttrs.push([/** @type {?} */ ((name)), /** @type {?} */ ((ast.source))]);\n targetEvents.push(new BoundEventAst(eventName, target, null, ast, sourceSpan));\n // Don't detect directives for event names for now,\n // so don't add the event name to the matchableAttrs\n };\n /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._parseAction = /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n function (value, sourceSpan) {\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ ast = this._exprParser.parseAction(value, sourceInfo, this._interpolationConfig);\n if (ast) {\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n }\n if (!ast || ast.ast instanceof EmptyExpr) {\n this._reportError(\"Empty expressions are not allowed\", sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (/** @type {?} */ e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n /**\n * @param {?} message\n * @param {?} sourceSpan\n * @param {?=} level\n * @return {?}\n */\n BindingParser.prototype._reportError = /**\n * @param {?} message\n * @param {?} sourceSpan\n * @param {?=} level\n * @return {?}\n */\n function (message, sourceSpan, level) {\n if (level === void 0) { level = ParseErrorLevel.ERROR; }\n this._targetErrors.push(new ParseError(sourceSpan, message, level));\n };\n /**\n * @param {?} errors\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._reportExpressionParserErrors = /**\n * @param {?} errors\n * @param {?} sourceSpan\n * @return {?}\n */\n function (errors, sourceSpan) {\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\n var error = errors_1[_i];\n this._reportError(error.message, sourceSpan);\n }\n };\n /**\n * @param {?} ast\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._checkPipes = /**\n * @param {?} ast\n * @param {?} sourceSpan\n * @return {?}\n */\n function (ast, sourceSpan) {\n var _this = this;\n if (ast) {\n var /** @type {?} */ collector = new PipeCollector();\n ast.visit(collector);\n collector.pipes.forEach(function (ast, pipeName) {\n var /** @type {?} */ pipeMeta = _this.pipesByName.get(pipeName);\n if (!pipeMeta) {\n _this._reportError(\"The pipe '\" + pipeName + \"' could not be found\", new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end)));\n }\n else {\n _this._usedPipes.set(pipeName, pipeMeta);\n }\n });\n }\n };\n /**\n * @param {?} propName the name of the property / attribute\n * @param {?} sourceSpan\n * @param {?} isAttr true when binding to an attribute\n * @return {?}\n */\n BindingParser.prototype._validatePropertyOrAttributeName = /**\n * @param {?} propName the name of the property / attribute\n * @param {?} sourceSpan\n * @param {?} isAttr true when binding to an attribute\n * @return {?}\n */\n function (propName, sourceSpan, isAttr) {\n var /** @type {?} */ report = isAttr ? this._schemaRegistry.validateAttribute(propName) :\n this._schemaRegistry.validateProperty(propName);\n if (report.error) {\n this._reportError(/** @type {?} */ ((report.msg)), sourceSpan, ParseErrorLevel.ERROR);\n }\n };\n return BindingParser;\n}());\nvar PipeCollector = /** @class */ (function (_super) {\n Object(__WEBPACK_IMPORTED_MODULE_0_tslib__[\"b\" /* __extends */])(PipeCollector, _super);\n function PipeCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pipes = new Map();\n return _this;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n PipeCollector.prototype.visitPipe = /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n function (ast, context) {\n this.pipes.set(ast.name, ast);\n ast.exp.visit(this);\n this.visitAll(ast.args, context);\n return null;\n };\n return PipeCollector;\n}(RecursiveAstVisitor));\n/**\n * @param {?} name\n * @return {?}\n */\nfunction _isAnimationLabel(name) {\n return name[0] == '@';\n}\n/**\n * @param {?} registry\n * @param {?} selector\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\nfunction calcPossibleSecurityContexts(registry, selector, propName, isAttribute) {\n var /** @type {?} */ ctxs = [];\n CssSelector.parse(selector).forEach(function (selector) {\n var /** @type {?} */ elementNames = selector.element ? [selector.element] : registry.allKnownElementNames();\n var /** @type {?} */ notElementNames = new Set(selector.notSelectors.filter(function (selector) { return selector.isElementSelector(); })\n .map(function (selector) { return selector.element; }));\n var /** @type {?} */ possibleElementNames = elementNames.filter(function (elementName) { return !notElementNames.has(elementName); });\n ctxs.push.apply(ctxs, possibleElementNames.map(function (elementName) { return registry.securityContext(elementName, propName, isAttribute); }));\n });\n return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort();\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\\[\\(([^\\)]+)\\)\\]|\\[([^\\]]+)\\]|\\(([^\\)]+)\\))$/;\n// Group 1 = \"bind-\"\nvar KW_BIND_IDX = 1;\n// Group 2 = \"let-\"\nvar KW_LET_IDX = 2;\n// Group 3 = \"ref-/#\"\nvar KW_REF_IDX = 3;\n// Group 4 = \"on-\"\nvar KW_ON_IDX = 4;\n// Group 5 = \"bindon-\"\nvar KW_BINDON_IDX = 5;\n// Group 6 = \"@\"\nvar KW_AT_IDX = 6;\n// Group 7 = the identifier after \"bind-\", \"let-\", \"ref-/#\", \"on-\", \"bindon-\" or \"@\"\nvar IDENT_KW_IDX = 7;\n// Group 8 = identifier inside [()]\nvar IDENT_BANANA_BOX_IDX = 8;\n// Group 9 = identifier inside []\nvar IDENT_PROPERTY_IDX = 9;\n// Group 10 = identifier inside ()\nvar IDENT_EVENT_IDX = 10;\n// deprecated in 4.x\nvar TEMPLATE_ELEMENT = 'template';\n// deprecated in 4.x\nvar TEMPLATE_ATTR = 'template';\nvar TEMPLATE_ATTR_PREFIX = '*';\nvar CLASS_ATTR = 'class';\nvar TEXT_CSS_SELECTOR = CssSelector.parse('*')[0];\nvar TEMPLATE_ELEMENT_DEPRECATION_WARNING = 'The